使用wireshark解密tls目前有三種方法:
1. 使用服務器私鑰證書解密
2. 使用SSLKEYLOGFILE解碼
3. 禁用瀏覽器的Diffie-Hellman算法(火狐為例)(部分網站有限制)
第一種方法適合有服務器權限的,方法就是導出服務器的私鑰證書導入wireshark這里,缺點是無法解密DHE算法
第二種很久前就配置好了,一直沒總結,這次再做一遍,順便截個圖做個復習記錄
key文件很大了
1. 配置SSLKEYLOGFILE環境變量
運行輸入“control system”找到“高級系統設置”-“環境變量”,添加下面變量,值為自己盤中文件名

2. 配置wireshark首選項
在wireshark-編輯-首選項-Protocols-TLS的這里添加上面的文件名即可

第三種方法的目的是但采用第一種方法時遇到服務端采用Diffie-Hellman算法的情況,所以強制使用其他算法
1. firefox瀏覽器設置禁用Diffie-Hellman算法的方法

2. 下面這是我的火狐瀏覽器還有兩個ECDHE算法沒禁用的截圖,在Client Hello包能看到客戶端支持的當前所有算法

這里服務器端Server Hello包看到優先使用了ECDHE算法

3. 禁用全部DHE算法后,已經沒有了

這時的服務器端使用RSA的算法套件

解密后的請求包

解密后的返回包

追蹤HTTP流看下,更直觀

又碰到種情況,禁用DHE算法后,有些網站報錯(錯誤代碼:NS_ERROR_NET_INADEQUATE_SECURITY),比如下列
本來好好的網站

變成這個樣子

設置http2的值即可


參考:
如何通過Wireshark查看HTTPS、HTTP/2網絡包(解碼TLS、SSL)
Linux服務器可以進百度,但是進阿里雲或者別的一些網站提示‘錯誤代碼:NS_ERROR_NET_INADEQUATE_SECURITY’的問題 - 消逝的風i - 博客園


