浅析HTTPS的通信机制
什么是HTTPS?
HTTPS 是在HTTP(Hyper Text Transfer Protocol)的基础上加入SSL(Secure Sockets Layer),在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。依此避免HTTP的明文传输容易被窃听、不验证身份容易被伪装、无法验证报文完整性容易被篡改等问题。除了被广泛用于互联网上安全敏感的通讯,大部分网站也正在广泛采用 。
HTTPS的通信机制
HTTPS不仅仅是把http://换成https://看上去那么简单,HTTPS的通信机制要比HTTP的复杂一些。
第一步,客户端向服务端发送Client Hello报文。在报文中描述了客户端支持的SSL版本,还有客户端支持的加密算法及密钥长度。
第二步,服务端向客户端发送Server Hello报文作为应答。在报文中描述了服务端和客户端可以共同使用的SSL版本、加密算法及密钥长度,以此作为后续报文传输的加密方式。
第三步,服务端向客户端发送Certificate报文。在报文中包含由数字证书认证机构(Certificate Authority,CA)和其相关机构颁发的公共密钥证书。
第四步,服务端向客户端发送Server Hello Done报文,通知客户端SSL握手协商部分结束。
第五步,当客户端收到服务端SSL握手结束的报文后,客户端首先验证证书的合法性和可靠性,然后向服务端发送Client Key Exchange报文。在报文中包含了使用证书中公开密钥加密的随机密钥。
第六步,客户端向服务端发送Change Cipher Spec报文。这个报文是为了提示服务端之后的通信都使用那个随机密钥进行对称加密。
第七步,客户端向服务端发送Finished报文。这个报文包含从开始连接到现在全部报文的整体校验值。服务端,握手协商成功。
第八步,当服务端能够正确解密并验证客户端的校验值时,同样向客户端发送Change Cipher Spec报文。
第九步,服务端向客户端同样发送Finished报文。
第十步,服务端和客户端的Finished报文交换完毕之后,SSL连接就建立完成了。当通信会受到 SSL 的保护后,开始发送 HTTP 请求和相应。
尾声
目前越来越多的核心技术被“卡脖子”,之前也传出一些开源软件禁止我国的使用。我有一个担心,万一CA也别被“卡脖子”,甚至被“征用”,那么我国的网络安全会受到极大的威胁。