先附上https协议交互过程
    第1步,浏览器给出协议版本号、一个客户端生成的随机数,以及客户端支持的加密方法。
    第2步,服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。
    第3步,并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey。
    第4步,浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。
    第5步,服务器发给浏览器一个session ticket。
    image.png
    开始实战:

    1. 以下配置为Linux机器,首先在Linux机器上配置 SSLKEYLOGFILE 变量,value为keylog 文件名,浏览器在ssl交互过程中会将生成的sslkey保存到该文件,注意文件的权限666

      1. export SSLKEYLOGFILE="/root/sslkey.txt"
      2. chmod 666 /root/sslkey.txt
    2. 使用 tcpdump 工具抓取报文,并将抓取结果保存到example.cap

      1. tcpdump -i eth0 host example.com and tcp port 443 -w example.cap
    3. 使用curl访问上面tcpdump抓取的 host 域名

      1. curl -v https://www.example.com
    4. 确认 sslkey 有生成https交互过程中产生的密钥

      1. cat /root/sslkey.txt
    5. 将example.cap ,sslkey.txt 文件导出到windows主机上,并在windows主机上安装wireshark

      1. sz /root/sslkey.txt
      2. sz example.cap
    6. 打开wireshark,配置TLS协议密钥

    image.png

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