IMLC.ME

Java 如何生成 SSLKEYLOGFILE

SSLKEYLOGFILE,记录了 SSL 用于加密流量的密钥信息,以用于后期解密捕获到的流量信息。

Chrome 和 Firefox 支持通过设置 SSLKEYLOGFILE 环境变量输出 key log file。Linux 下的命令行工具 curl 也对此提供了支持。

但是 Java 缺没有内建对此流量的支持。

要解密 Java 程序的 SSL 流量(HTTPS、HTTP/2),需要借助 jSSLKeyLog 工具。

1. 下载 jSSLKeyLog

https://github.com/jsslkeylog/jsslkeylog/releases 下载最新的 jSSLKeyLog 压缩包。

2. 使用 jSSLKeyLog 启动应用程序

jSSLKeyLog 以 Java Agent 的形式使用,同时指定 SSLKEYLOGFILE 的输出路径。

java -javaagent:jSSLKeyLog.jar=/path/to/your_logfile.log ... -jar file.jar

使用 Wireshark 打开 tcpdump 文件,并指定 SSLKEYLOGFILE 的路径

通过 上方菜单栏 -> 编辑 -> 首选项 打开首选项对话框。
左侧展开 Protocols 列表,找到 TLS 协议(选中 Protocols 的情况下,键盘一次输入 T、L、S 能直接定位 TLS 协议)。
然后在 "(Pre)-Master-Secret log file" 中选择我们的 key log file。

Preview

参考资料

jsslkeylog

TLS - Wireshark