HTTPS|SSL笔记-SSL双向认证失败(服务端证书信任库不含客户端证书)握手过程(含wireshark分析)
这里我把服务端信任库添加了其他证书,不含客户端的证书,这时SSL认证失败报错如下。下面来分析下:
- 首先是TCP三次握手,对应的包如下:
- 握手成功后,客户端发送自己支持的加密套,和随机数给服务端,也就是Client Hello
对应的是这个:
具体内容如下:
其中Random为随机数、Cipher Suites为加密套及signature_algorithms为签名算法。
- 服务端收到后回复ACK,对应的包如下:
- 服务端发送自己的随机数以及选择一个加密套以及服务端证书给客户端也就是Server Hello
对应的包:
具体如下:
可知Handshake为Server Hello Done。
Random为随机数。Cipher Suite为选择的加密套。
Certificate里面含有证书。
- 客户端回复ACK对应的包如下:
- 客户端端发送自己的证书,握手类型为Client Key Exchange
对应的包:
具体内容如下:
其中Handshake Protocol为Client Key Exchange。
Certificate为证书。
- 服务端收到后回复ACK对应的包如下:
- 服务端拿到客户端证书后,发现自己的信任库里面没有此证书,就发出Alert,描述为Bad Certificate,对应的包如下:
具体内容如下:
Alert Message为Fatal,描述为Bad Certificate
- 客户端收到服务端的Alert后,回复ACK:
- 最后就是TCP4次分手了,这里程序写得估计有点问题,在此不截图了,此博文只研究握手过程。
还没有评论,来说两句吧...