大家在使用Tomcat等服務(wù)器配置成HTTPS(基于TLS/SSL)后,調試時(shí)往往需要用Wireshark去抓包,并希望查看其中的HTTP消息。但是HTTPS的通訊是加密的,所以默認情況下你只能看到HTTPS在建立連接之初的交互證書(shū)和協(xié)商的幾個(gè)消息而已,真正的業(yè)務(wù)數據(HTTP消息)是被加密的,你必須借助服務(wù)器密鑰(私鑰)才能查看。即使在HTTPS雙向認證(服務(wù)器驗證客戶(hù)端證書(shū))的情況下,你也只需要服務(wù)器私鑰就可以查看HTTPS消息里的加密內容。
注:如何配置HTTPS服務(wù)器可以參考
《如何用Tomcat和Openssl構建HTTPS雙向認證環(huán)境(HTTPS客戶(hù)端認證)》。
1. 配置Wireshark選中Wireshark主菜單Edit->Preferences,將打開(kāi)一個(gè)配置窗口;窗口左側是一棵樹(shù)(目錄),你打開(kāi)其中的Protocols,將列出所有Wireshark支持的協(xié)議;在其中找到SSL并選中,右邊窗口里將列出幾個(gè)參數,其中“RSA keys list”即用于配置服務(wù)器私鑰。該配置的格式為:
<ip>,<port>,<protocol>,<key_file_name>
各字段的含義為:
<ip> ---- 服務(wù)器IP地址(對于HTTPS即為WEB服務(wù)器)。
<port> ---- SSL的端口(HTTPS的端口,如443,8443)。
<protocol> ---- 表示SSL里加密的是什么協(xié)議,對于HTTPS,這項應該填HTTP。
<key_file_name> ---- 服務(wù)器密鑰文件,文件里的私鑰必須是明文(沒(méi)有密碼保護的格式)。
例如: 192.168.1.1,8443,http,C:/myserverkey/serverkey.pem
若你想設置多組這樣的配置,可以用分號隔開(kāi),如:
192.168.1.1,8443,http,C:/myserverkey/clearkey.pem;10.10.1.2,443,http,C:/myserverkey/clearkey2.pem
2. 導出服務(wù)器密鑰(私鑰)的明文格式(即前面提到的<key_file_name>)大家當初在配置HTTPS服務(wù)器,服務(wù)器私鑰時(shí),一般都會(huì )輸入一個(gè)保護私鑰的密碼。那如何導出明文形式的服務(wù)器私鑰呢,需要視情況而定:
(1)若你是像
《如何用Tomcat和Openssl構建HTTPS雙向認證環(huán)境(HTTPS客戶(hù)端認證)》里所述的那樣,用類(lèi)似于如下命令生成服務(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還在,則可以這樣導出服務(wù)器私鑰明文文件:
openssl rsa -in serverkey.pem > clearkey.pem 執行命令式需要輸入私鑰的保護密碼就可以得到私鑰明文文件clearkey.pem了。
(2)若你已把serverkey.pem丟了,但還有pkcs12格式的服務(wù)器證書(shū)庫文件,該文件當初用類(lèi)似于以下命令生成的:
openssl pkcs12 -export -in servercert.pem -inkey serverkey.pem /
-out tomcat.p12 -name tomcat -CAfile "$HOME/testca/cacert.pem" /
-caname root -chain
則,你可以用下面命令把服務(wù)器私鑰從tomcat.p12(pkcs12格式)文件里導出來(lái):
openssl pkcs12 -in tomcat.p12 -nocerts -nodes -out clearkey.pem
執行命令式需要輸入pkcs12的保護密碼。
然后編輯一下生成的clearkey.pem文件,把“-----BEGIN RSA PRIVATE KEY-----”之前的內容刪掉就可以了。
(3)若你的服務(wù)器私鑰是用java的keytool命令生成的keystore文件,則要弄出來(lái)比較麻煩,建議服務(wù)器keystore最好用
《如何用Tomcat和Openssl構建HTTPS雙向認證環(huán)境(HTTPS客戶(hù)端認證)》里的openssl生成服務(wù)器公鑰私鑰和證書(shū)的方法,生成pkcs12格式的keystore。