我們在接口測試和故障診斷調(diào)試時艇肴,需要查看消息里邊的內(nèi)容哄酝,如果是http消息可以通過wireshark抓包分析軟件看到麦向,但https消息內(nèi)容在傳輸過程中是加密的,怎樣才能看到https加密后的消息呢搞挣?
從技術(shù)上來說带迟,需要拿到密鑰,通過密鑰對消息內(nèi)容進行解密囱桨。
從難易程度上來說仓犬,有兩個難題:獲取密鑰和密鑰解密。密鑰是不會在交互過程中傳輸?shù)纳岢Γ瑢τ诘?方搀继,拿到密鑰的可能性不大或者非常難。對于密鑰解密翠语,非專業(yè)人士是不易做到的叽躯,最好的方式是借助于現(xiàn)有的工具。
今天介紹一個方法:wireshark中查看https消息內(nèi)容的方法
選中Wireshark主菜單Edit->Preferences肌括,將打開一個配置窗口点骑;窗口左側(cè)是一棵樹(目錄),你打開其中的Protocols,將列出所有Wireshark支持的協(xié)議黑滴;找到SSL并選中憨募,右邊窗口里將列出幾個參數(shù),“RSA keys list”用于配置服務(wù)器私鑰袁辈,其格式為:<ip>,<port>,<protocol>,<key_file_name>
各字段的含義為:
<ip>? ? ---- 服務(wù)器IP地址
<port>? ---- 服務(wù)器SSL的端口
<protocol> ---- 表示SSL里加密的是什么協(xié)議菜谣,對于HTTPS,這項應(yīng)該填HTTP晚缩。
<key_file_name> ---- 服務(wù)器密鑰文件尾膊,文件里的私鑰必須是明文(沒有密碼保護的格式)。
如果設(shè)置單個這樣的配置(該抓包內(nèi)容可以是客戶端的荞彼,也可以是服務(wù)端的)冈敛,填寫為192.168.1.1,8443,http,C:/myserverkey/serverkey.pem
如果設(shè)置多個這樣的配置(該抓包內(nèi)容是客戶端的,需要查看該客戶端和多個https服務(wù)端的消息內(nèi)容)卿泽,可以用分號隔開莺债,填寫為192.168.1.1,8443,http,C:/myserverkey/clearkey.pem;10.10.1.2,443,http,C:/myserverkey/clearkey2.pem
如何生成沒有密碼保護的密鑰?
用如果生成服務(wù)器私鑰的命令類似如下:
? openssl req -newkey rsa:1024 -keyout serverkey.pem -keyform PEM -out serverreq.pem /
? ? ? ? ? ? -outform PEM -subj "/O=ABCom/OU=servers/CN=servername"M
通過服務(wù)器私鑰文件serverkey.pem可以導(dǎo)出服務(wù)器私鑰明文文件:
? openssl rsa -in serverkey.pem > clearkey.pem
執(zhí)行命令式需要輸入私鑰的保護密碼就可以得到私鑰明文文件clearkey.pem了签夭。