第一步
SSLKEYLOGFILE=$HOME/premaster.txt chromium-browser &>/dev/null & |
在控制台中启动wireshark应用。
wireshark &>/dev/null |
第二步
打开Wireshark - Preferences - Protocols - SSL - (Pre)-Master-Secret log filename,设置前面命令行中的premaster.txt完整的路径。
第三步
- 启动
wireshark抓包 - 在
Chromium浏览器中访问链接:https://httpbin.org/get
第四步
- 查看
$HOME/premaster.txt文件,正确的情况下里面应该会有内容,没有内容则说明浏览器不支持SSLKEYLOGFILE。 - 在 wireshark 中的过滤查找此请求的数据包并
Follow SSL stream,选中HTTP GET /get这个请求,查看Decrypted SSL Data标签,如图所示。
HTTPS RSA 握手过程简单说明
- [明文] 客户端发送随机数client_random和支持的加密方式列表
- [明文] 服务器返回随机数server_random,选择的加密方式和服务器证书链
- [RSA] 客户端验证服务器证书,使用证书中的公钥加密premaster secret发送给服务端
- 服务端使用私钥解密premaster secret
- 两端分别通过client_random,server_random 和premaster secret 生成master secret,用于对称加密后续通信内容
客户端和服务端在握手hello消息中明文交换了client_random和server_random,使用RSA公钥加密传输premaster secret,最后通过算法,客户端和服务端分别计算master secret。其中,不直接使用premaster secret的原因是:保证secret的随机性不受任意一方的影响。