SSL⼀TLS协议解析

2025-04-13 08:20:33
推荐回答(1个)
回答1:

本文借助wireshark抓包详细的讲解SSL/TLS协议。HTTPS是为了解决http报文明文传输过程中的安全问题。HTTPS是“HTTP over SSL”的缩写。所以要了解HTTPS就必须先了解SSL/TLS协议。

HTTP协议中所有消息都是明文传播,存在如下三大风险

为了解决这个三个风险,分别对应如下三个解决方案。

由于SSL的2个版本都已经退出历史舞台了,所以本文后面只用TLS这个名字。 一般所说的SSL就是TLS。

TLS建立连接的过程如下图,先有个大概的印象,后面我们再详细分析。整个需要四次握手。

SSL/TLS工作在应用层和传输层之间 ,在建立连接的之前需要先建立TCP连接(三次握手),如下图。

记录协议根据rfc描述 记录协议(Record Layer) 有如下4种类型,即上图中Content Type可以取的值。

记录协议(Record Layer) 数据结构

握手协议(Handshake Protocal) 有如下10种类型。

握手协议(Handshake Protocal) 数据结构

wireshark抓包显示客户端支持的加密套件有31种。 cipher的格式为:认证算法 密钥交换算法 加密算法_ 摘要算法 。server会从这些算法组合中选取一组,作为本次SSL连接中使用。

这个包告诉我们服务器和客户端是通过Diffie-Hellman算法来生成最终的密钥(也就是Sessionkey会话密钥),pubkey是Diffie-Hellman算法中的一个参数,这个参数需要通过网络传给客户端,即使它被截取也不会影响安全性。具体见参考文献三。
在client hello和server hello包中都有Random字段,上面我们是没有说明的,client和server这两个随机数加Diffie-Hellman算法生成出来的这个key。一共三个数字生成最终对称加密的key

从现在开始发送的数据就是采用上述步骤协商出的对称加密密钥加密过的数据了

再回过头来看一下这张图,加密过程总结如下: