https://www.jianshu.com/p/7c16474edd9b
我们在接口测试和故障诊断调试时,需要查看消息里边的内容,如果是http消息可以通过wireshark抓包分析软件看到,但https消息内容在传输过程中是加密的,怎样才能看到https加密后的消息呢?
从技术上来说,需要拿到密钥,通过密钥对消息内容进行解密。
从难易程度上来说,有两个难题:获取密钥和密钥解密。密钥是不会在交互过程中传输的,对于第3方,拿到密钥的可能性不大或者非常难。对于密钥解密,非专业人士是不易做到的,最好的方式是借助于现有的工具。
选中Wireshark主菜单Edit->Preferences,将打开一个配置窗口;窗口左侧是一棵树(目录),你打开其中的Protocols,将列出所有Wireshark支持的协议;找到SSL并选中,右边窗口里将列出几个参数,“RSA keys list”用于配置服务器私钥,其格式为:<ip>,<port>,<protocol>,<key_file_name>
各字段的含义为:
<ip> ---- 服务器IP地址
<port> ---- 服务器SSL的端口
<protocol> ---- 表示SSL里加密的是什么协议,对于HTTPS,这项应该填HTTP。
<key_file_name> ---- 服务器密钥文件,文件里的私钥必须是明文(没有密码保护的格式)。
如果设置单个这样的配置(该抓包内容可以是客户端的,也可以是服务端的),填写为192.168.1.1,8443,http,C:/myserverkey/serverkey.pem
如果设置多个这样的配置(该抓包内容是客户端的,需要查看该客户端和多个https服务端的消息内容),可以用分号隔开,填写为192.168.1.1,8443,http,C:/myserverkey/clearkey.pem;10.10.1.2,443,http,C:/myserverkey/clearkey2.pem
用如果生成服务器私钥的命令类似如下:
openssl req -newkey rsa:1024 -keyout serverkey.pem -keyform PEM -out serverreq.pem /
-outform PEM -subj "/O=ABCom/OU=servers/CN=servername"M
通过服务器私钥文件serverkey.pem可以导出服务器私钥明文文件:
openssl rsa -in serverkey.pem > clearkey.pem
执行命令式需要输入私钥的保护密码就可以得到私钥明文文件clearkey.pem了。