最近项目上需要抓取TLS数据包,并导出通信过程中的数字证书。遇到很诡异的现象:同一个网站,同样的用户名和口令,用wireshark抓取登录过程的数据包,别人的可以显示很多数据,包括certificate。
而我的则会显示大量Application Data。通过网络查询,了解到是因为没有为TLS协议设置key log,致使无法正确解析TLS协议的数据包。key log文件是Firefox、Chrome、curl等应用程序在SSLKEYLOGFILE设置环境变量时生成的文本文件。准确地说,它们的底层库(NSS、OpenSSL 或Boringssl)将所需的每个会话密钥写入文件。
解决办法:
1、设置环境变量SSLKEYLOGFILE
2、wireshark设置TLS的(Pre)-Master-Secretlog filename,内容与环境变量SSLKEYLOGFILE一致。
至此,wireshark可以解析出TLS的数据包了。原来显示为Application Data都显示成具体协议内容了。