限制java ssl调试日志记录

Ste*_*lds 80 java ssl logging jvm

使用JVM标志

-Djavax.net.debug=ssl
Run Code Online (Sandbox Code Playgroud)

正在产生巨大的日志记录,服务器上每个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
Run Code Online (Sandbox Code Playgroud)

小智 74

使用附加ssl标志的格式ssl:[flag]例如是:

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

  • 这是一个备受推崇的答案,但它真的对人们有用吗?似乎不适合我。还有一个 [bug entry](https://bugs.openjdk.java.net/browse/JDK-8044609) 这些选项实际上不起作用。 (3认同)

cap*_*tej 13

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

这有点牵扯,但我更喜欢做的是在某个廉价服务器上设置mitmproxy,然后配置我的Java客户端通过它进行代理.通过这种方式,我可以轻松地检查和重放代理上的HTTPS请求/响应流,而无需梳理一堆日志.

如果您对此感兴趣,我已经编写了一个如何实现这一目标的指南:使用mitmproxy在Java中调试SSL

  • 我认为您的方法对于调试 TLS 会话内部发生的流量并了解其中的每个细节并能够修改它很有用,但在调查 TLS 会话本身级别发生的问题时,它的意义就小得多。您的代理将更改并隐藏该级别最初发生的事情。 (3认同)