limiting java ssl debug logging

使用 JVM 标志

-Djavax.net.debug=ssl

正在产生大量的日志记录,即服务器上每个 SSL 事件的详细信息。无论如何都要让它记录错误吗?或者可能有这些标志的一些更好的子集产生更整齐的输出

all            turn on all debugging
ssl            turn on ssl debugging


The following can be used with ssl:


record       enable per-record tracing
handshake    print each handshake message
keygen       print key generation data
session      print session activity
defaultctx   print default SSL initialization
sslctx       print SSLContext tracing
sessioncache print session cache tracing
keymanager   print key manager tracing
trustmanager print trust manager tracing
pluggability print pluggability tracing


handshake debugging can be widened with:
data         hex dump of each handshake message
verbose      verbose handshake message printing


record debugging can be widened with:
plaintext    hex dump of record plaintext
packet       print raw SSL/TLS packets

Further reading

121573 次浏览

例如,使用其他 ssl标志的格式是 ssl:[flag]:

-Djavax.net.debug=ssl:record-Djavax.net.debug=ssl:handshake

我还发现使用 -Djavax.net.debug=ssl(甚至它的过滤器)对于调试 HTTPS 问题来说太麻烦了。

这有点复杂,但是我更喜欢在某个廉价的服务器上设置 代理服务器,然后配置我的 Java 客户机以通过它进行代理。通过这种方式,我可以轻松地在代理上检查和重播 HTTPS 请求/响应流,而不必梳理大量日志。

如果你感兴趣的话,我已经写了一篇关于如何实现这个目标的指南: 使用 mitmxy 在 Java 中调试 SSL