[https][tls] 如何使用wireshark查看tls/https加密消息--使用私鑰


之前總結了使用keylog進行https流量分析的方法:

[https][tls] 如何使用wireshark查看tls/https加密消息--使用keylog

 

今天總結一下使用服務器端證書私鑰進行https加密信息解密的方法,如下:

一 server端

首先我有一個在4040端口開啟了https服務的nginx server。使用如下證書與服務配置

╰─>$ ll ~/Keys/https/sni/ |grep test2
-rw-r--r-- 1 tong tong 1.4K Sep 24 17:50 sni_test2.cer
-rw------- 1 tong tong 1.7K Sep 24 15:37 sni_test2.key

 

二 client 端

服務啟用后,在client端,分別使用DHE與AES算法進行秘鑰協商通信,如下:

curl --cacert ~/Keys/https/root/root.cer  https://test2.www.local:4040 -v
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
... ...

curl -k --cacert ~/Keys/https/root/root.cer --ciphers AES128-GCM-SHA256 https://test2.www.local:4040 -v
* SSL connection using TLSv1.2 / AES128-GCM-SHA256
... ...

curl的算法支持列表,見如下鏈接的openssl小節

https://curl.haxx.se/docs/ssl-ciphers.html

 

使用tcpdump抓取以上兩側通信的pcap包

-rw-r--r-- 1 root root 4.4K Oct 29 14:49 4040-aes128.pcap
-rw-r--r-- 1 root root 4.5K Oct 29 14:37 4040-dhe.pcap

 

三 wireshark

DHE協商算法,是不能被該方法解析的,只能使用keylog方式。任何一次一密的通信方式(完美前向加密)都不能使用該方法解析。

接下來,只分析aes128的數據包。

使用wireshark打開

在 edit->Preferences->Protocols->TLS->RSA keys list 中進行編輯,並將上文中提到的私鑰sni_test2.key配置其中。如圖:

 

 

之后,保存配置。可以看到加密的tls流量已經被成功解析了。

 

 

注意:

需要注意的是,key文件的格式,以及是否有密碼。我的是沒有密碼的,格式如下:

╰─>$ file ~/Keys/https/sni/sni_test2.key 
/home/tong/Keys/https/sni/sni_test2.key: PEM RSA private key

 

根據以前的經驗,有密碼的key可能會有一下問題。https://www.cnblogs.com/hugetong/p/6845436.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM