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分析)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL笔记-MHA(Master H
- 下一篇: HTTPS|SSL笔记-SSL双向认证失