【问题标题】:limiting java ssl debug logging限制 java ssl 调试日志记录
【发布时间】:2014-07-02 19:09:44
【问题描述】:

使用 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

【问题讨论】:

  • 我相信您可以通过异常免费获得错误。无需特殊操作。
  • 这是专门用于调试的。因此有大量的日志。
  • 将其设置为"" 似乎只显示一些警告。

标签: java logging ssl jvm


【解决方案1】:

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

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

【讨论】:

  • 这是一个高度赞成的答案,但它真的对人们有用吗?它似乎不适合我。还有一个bug entry,这些选项实际上不起作用。
  • @eis 是的,它对我有用。也许您没有正确设置它,如果是这样,您应该明确提出一个新问题,以便我们可以帮助您:)
  • @Alfabravo 所以你是说错误条目是无效的并且这些按预期工作?
  • 嗯,从 2014 年开始,jdk7 和 openjdk。另外,有人评论 here 说调试日志得到了改进,所以就是这样
【解决方案2】:

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

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

如果您有兴趣,我已经写了一份关于如何进行的指南:Debugging SSL in Java using mitmproxy

【讨论】:

  • 我认为您的方法对于调试 TLS 会话中发生的流量并包含所有细节以及能够对其进行修改很有用,但在调查发生在TLS 会话本身的级别。您的代理将更改并隐藏该级别最初发生的情况。
猜你喜欢
  • 2023-03-20
  • 2011-06-22
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 2016-08-12
  • 2015-11-04
相关资源
最近更新 更多