先附上https协议交互过程
第1步,浏览器给出协议版本号、一个客户端生成的随机数,以及客户端支持的加密方法。
第2步,服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。
第3步,并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey。
第4步,浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。
第5步,服务器发给浏览器一个session ticket。
开始实战:
以下配置为Linux机器,首先在Linux机器上配置 SSLKEYLOGFILE 变量,value为keylog 文件名,浏览器在ssl交互过程中会将生成的sslkey保存到该文件,注意文件的权限666
export SSLKEYLOGFILE="/root/sslkey.txt"chmod 666 /root/sslkey.txt
使用 tcpdump 工具抓取报文,并将抓取结果保存到example.cap
tcpdump -i eth0 host example.com and tcp port 443 -w example.cap
使用curl访问上面tcpdump抓取的 host 域名
curl -v https://www.example.com
确认 sslkey 有生成https交互过程中产生的密钥
cat /root/sslkey.txt
将example.cap ,sslkey.txt 文件导出到windows主机上,并在windows主机上安装wireshark
sz /root/sslkey.txtsz example.cap
打开wireshark,配置TLS协议密钥

- 使用wireshark重新打开 example.cap 文件,即可看到解密后的应用层报文
