原理html
咱們先回顧一下SSL/TLS的整個握手過程:算法
要解密HTTPS流量,須要獲得加密密鑰,加密密鑰由主密鑰、客戶端隨機數、服務器隨機數生成。由上述握手過程可知,客戶端隨機數和服務器隨機數在雙方握手消息中傳遞,而主密鑰(master_secret)則由預主密鑰(pre_master_secret)結合兩個隨機數生成。預主密鑰經過密碼套件中的密鑰交換算法進行交換(DH、RSA)。瀏覽器
所以,經過Wireshark解密HTTPS,能夠從兩個地方下手:一、密鑰交換算法選擇RSA,而後提取服務器的私鑰,將私鑰導入Wireshark,經過Wireshark解密密鑰交換過程當中傳遞的預主密鑰,再結合以前的客戶端和服務器隨機數生成主密鑰,進一步生成加密密鑰,便可解密後續抓取到的加密報文。二、直接從客戶端提取預主密鑰,結合客戶端和服務器隨機數生成加密密鑰,實現對加密報文的解密。服務器
下面演示兩種方法解密HTTPS流量。dom
方法一ui
從服務器上導出帶私鑰的P12格式的證書,或者直接導出服務器的私鑰。加密
捕獲從TCP三次握手開始的完整報文:htm
能夠看到此時的報文是被TLS加密的,沒法看到具體的報文內容。blog
點擊編輯——>首選項——>協議——>SSL(有的版本只有TLS),導入RSA key:ip
因爲經過DH方法交換的密鑰不會在中間傳遞,因此這種方法只能解密經過RSA交換的密鑰。
導入服務器證書:
點擊ok後,Wireshark會對捕獲的報文進行解密:
報文被成功解密,能夠直觀的看到HTTP報文的請求和響應。
第二種
經過設置環境變量截取瀏覽器的pre_master_secret,進而實現解密HTTPS的目的。
環境變量中新建用戶變量SSLKEYLOGFILE=路徑\sslkey.log文件,以後再wireshark中ssl配置中制定該文件位置便可。
點擊編輯>首選項>protocol>ssl:
便可解密瀏覽器的訪問流量:
原文出處:https://www.cnblogs.com/yurang/p/11505741.html