HTTPS
HTTPS其实是有两部分组成:HTTP +SSL/ TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息
SSL的位置
SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。
Https的工作流程
HTTPS协议的通信过程概述
HTTPS的通信一般使用非对称加密进行秘钥传递然后使用对称加密进行后面的业务数据的传输。
基本分为三个阶段:
- 认证服务器。服务端发送CA证书到客户端验证身份;
- 协商会话密钥。客户端在认证完服务器,并获得服务器的公钥之后,利用该公钥与服务器进行加密通信,协商出两个会话密钥,一个是用于加密客户端往服务端发送数据的客户端会话密钥,另一个是用于加密服务端往客户端发送数据的服务端会话密钥。
- 加密通讯。此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据,都通过会话密钥加密。这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性。
为什么在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密钥?
是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。