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

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPS|SSL笔记-SSL双向认证成功握手过程(含wireshark分析)相关的知识,希望对你有一定的参考价值。

这里只研究连接过程。

整体的流程是这样的

前三个那个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双向认证就完成了,对应的包如下:

 内如下:

以上是关于HTTPS|SSL笔记-SSL双向认证成功握手过程(含wireshark分析)的主要内容,如果未能解决你的问题,请参考以下文章

百度CDN配置HTTPS双向认证

tomcat配置SSL双向认证

M25-9

计算机网络

SSL协议握手工作流程详解(双向HTTPS流程)

SSL双向认证和单向认证的区别是啥?