文章总结来源于b站up技术蛋老师对HTTPS的讲解:老师的详细讲解在这里
1.HTTPS是什么?
HTTPS 是在HTTP的基础上通过SSL/TLS传输加密和身份认证,保证了传输过程的安全性的网络安全协议。
注:出现HTTPS就是因为,HTTP的报文都是明文的,基本上有一点基础的都能看懂。
2.加密原理和证书?
常见加密:1.对称加密;2.非对称加密
对称加密:发送方和接受方通过同样的规则(钥匙)来对数据进行加密(解密)。
例如客户端想要向服务端发送“你好”,但客户端只想让服务端知道自己发送了什么,那么客户端和服务端约定好一个加密解密的规则,客户端按规则加密生成数据,再将数据发送给服务端,服务端拿到数据了,按照约定好的规则去对收到的数据进行解密,得到“你好”,在这个过程中,被其他人知道了规则,很容易能被破解,利用规则(钥匙)进行通信。
非对称加密:公开密钥是所有人都知道的密钥,私有密钥仅仅是持有方才有的密钥,一般私钥放在服务器中,数据经过公钥加密就只能被私钥解密,数据经过私钥加密就只能被公钥解密。
应用到服务端和客户端:服务端拥有成对的私钥和公钥,公布自己的公钥给客户端,客户端使用公钥加密数据,加密后只有服务端的私钥才能解密。
证书:证书向CA机构(大家信任的第三方机构)申请,生效后保存在源服务器,证书包括了特定的公钥和私钥,服务器安装证书之后,客户端就可以通过https访问服务器了。
3.SSL/TLS握手过程
1.客户端向服务端打招呼,将自己的TLS版本,加密套件,且生成随机数1发给服务端;
1.服务端向客户端打招呼,将自己的TLS版本,加密套件,且生成随机数2发给客户端;
3.服务端把证书和公钥发送给客户端,发送完毕告诉客户端;
4.客户端生成随机数3(预主密钥),TLS协商没问题了,用公钥加密后发送给服务端;
5.服务端收到客户端发送的预主密钥,用自己的私钥进行解密,服务端得到预主密钥;
6.服务端、客户端都用预主密钥、随机数1、随机数2计算,计算出会话密钥,两个会话密钥是相同的(前面是使用非对称加密得到会话密钥);
7.后面的通信使用会话密钥进行对称加密;
整个过程,因为有第三方CA机构的证书(包含公钥和私钥),除非泄露出去私钥,否则整个通信过程是相对安全很多的。