TLS1.3抓包分析----解密Application Data
一、问题描述
TLS1.3 在两次握手后,开始加入加密传输。具体表现Change Cipher Spec之后出现 Application Data(加密后的数据,WireShark不能解密)。
二、解决方案
tls1.3 交互的双方分别是 谷歌浏览器和 支持tls1.3的服务器。WireShark在抓包过程中的作用是呈现数据交互,它本身不会存储客户端和服务端交互的各种信息。包括会话密钥。
所以想要让WireSharke解密需要告诉指定会话密钥,但这个信息只有浏览器知道。又因为Firefox和Chrome浏览器都支持用log文件的方式记录下用来加密TLS数据包对称会话秘钥的,
所以创建ssl.log来保存会话密钥,然后把这个文件路径告诉wireShark就能看到明文。
三、具体操作步骤
我的设备:mac os Sequoia 15.1.1 M3
1. 终端方式启动Chrome浏览器
将Chrome浏览器按指定log文件的方式,记录加密TLS数据对称会话密钥。(ssl.log填写自己的绝对路径)
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --ssl-key-log-file=/Users/test/log/ssl.log
2. 配置wireshark 日志路径
wireshark -> preferences -> Protocols -> tls
3. 打开浏览器请求域名验证
浏览器输入https://api.github.com,查看ssl.log是否有内容产生(如下)。
4. 效果
可以看到Application Data变成了 Certificate, Certificate verify, Finished。
四、排查过程
https://www.jianshu.com/p/9c027c580f8d
网络上找了好久,都是在重复copy这个人的思路。可是这种windows的方式并不能解决我的问题。问题主要卡在了文内设置完系统变量后,浏览器就会自动使用,可是明显mac不是这样的。于是我就在寻找如果让我本地浏览器按指定日志的方式启动。
后来在一偏文章中看到了 --ssl-key-log-file=xx.log。到这里浏览器和抓包工具联系起来了,问题也解决了。