HTTPS|SSL笔记-SSL双向认证成功握手过程(含wireshark分析)

本文详细解读了SSL/TLS安全套接字层的握手过程,包括TCP三次握手后,客户端和服务端之间的ClientHello、ServerHello、证书交换、密钥协商等关键步骤,以及每个阶段的数据包内容和验证过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里只研究连接过程。

整体的流程是这样的

前三个那个SYN、SYN ACK、ACK是TCP三次握手,就不说了。

1. 握手成功后,客户端发送自己支持的加密套,和随机数给服务端,也就是Client Hello

对应的是这个:

 其中内容

2. 服务端收到Client Hello回复Ack

 

3. 服务端发送自己的随机数以及选择一个加密套以及服务端证书给客户端也就是Server Hello

对应的包:

 具体内容如下:

 

可知Handshake为Server Hello Done。

Random为随机数。Cipher Suite为选择的加密套。

Certificate里面含有证书。

4. 客户端收到Server Hello后,回复Ack

 

5. 客户端端发送自己的证书,握手类型为Client Key Exchange

对应的包:

 内容如下:

其中Handshake Protocol为Client Key Exchange。

Certificate为证书。

6. 服务端收到后回复ACK对应的包如下:

 

7. 客户端发送Certificate Verify

对应的包如下;

 内容如下:

发送Certificate Verify类型的握手需要2个前提条件:

①服务端获取了客户端证书;

②客服端发送了非0长度的证书。

客户端想要证明自己拥有该证书,需要用私钥签名一段数据给服务端验证,看服务端能不能用客户端公钥进行验签。

8. 服务端收到后,回复ACK,对应的包如下:

9.客户端发送Change Cipher Spec对应的包如下:

 内容如下:

步骤1和3,客户端服务端都交换了随机数,通过这个随机数,客户端和服务端会生成预主密钥,这个包的意思就是告诉服务端,我现在开始用主密钥进行加密了(客户端随机数 + 服务端随机数 + 预主密钥 = 主密钥)。

10. 服务端收到后回复ACK对应的包如下:

11. 客户端发送Encrypted Handshake Message对应的包如下: 

内容如下:

 

这个包的目的就是告诉对端自己再整个握手过程中收到了什么数据,发送了什么数据,来保证中间没人篡改报文。

12. 服务端回复ACK,对应此包:

13. 服务端发送Change Cipher Spec对应的包如下:

 内容如下:

步骤1和3,客户端服务端都交换了随机数,通过这个随机数,客户端和服务端会生成预主密钥,这个包的意思就是告诉客户端,我现在开始用主密钥进行加密了(客户端随机数 + 服务端随机数 + 预主密钥 = 主密钥)。

14. 客户端回复ACK,对应的包如下:

 内容如下:

 

15. 服务端发送Encrypted Handshake Message,对应包如下:

 内容如下:

 

这个包的目的就是告诉对端自己再整个握手过程中收到了什么数据,发送了什么数据,来保证中间没人篡改报文。

16. 客户端回复ACK,这样SSL双向认证就完成了,对应的包如下:

 内如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值