一、問題描述
TLS1.3 在兩次握手後,開始加入加密傳輸。具體表現Change Cipher Spec之後出現 Application Data(加密後的資料,WireShark不能解密)。
二、解決方案
tls1.3 互動的雙方分別是 谷歌瀏覽器和 支援tls1.3的伺服器。WireShark在抓包過程中的作用是呈現資料互動,它本身不會儲存客戶端和服務端互動的各種資訊。包括會話金鑰。
所以想要讓WireSharke解密需要告訴指定會話金鑰,但這個資訊只有瀏覽器知道。又因為Firefox和Chrome瀏覽器都支援用log檔案的方式記錄下用來加密TLS資料包對稱會話秘鑰的,
所以建立ssl.log來儲存會話金鑰,然後把這個檔案路徑告訴wireShark就能看到明文。
三、具體操作步驟
我的裝置:mac os Sequoia 15.1.1 M3
1. 終端方式啟動Chrome瀏覽器
將Chrome瀏覽器按指定log檔案的方式,記錄加密TLS資料對稱會話金鑰。(ssl.log填寫自己的絕對路徑)
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --ssl-key-log-file=/Users/test/log/ssl.log
2. 配置wireshark 日誌路徑
wireshark -> preferences -> Protocols -> tls
3. 開啟瀏覽器請求域名驗證
瀏覽器輸入https://api.github.com,檢視ssl.log是否有內容產生(如下)。
4. 效果
可以看到Application Data變成了 Certificate, Certificate verify, Finished。
四、排查過程
https://www.jianshu.com/p/9c027c580f8d
網路上找了好久,都是在重複copy這個人的思路。可是這種windows的方式並不能解決我的問題。問題主要卡在了文內設定完系統變數後,瀏覽器就會自動使用,可是明顯mac不是這樣的。於是我就在尋找如果讓我本地瀏覽器按指定日誌的方式啟動。
後來在一偏文章中看到了 --ssl-key-log-file=xx.log。到這裡瀏覽器和抓包工具聯絡起來了,問題也解決了。