gpt4 book ai didi

java - 仅在使用 Java 的 Tomcat 8+ 上启用记录 SSL 握手失败(审计目的日志)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:24:05 31 4
gpt4 key购买 nike

如果 REST 客户端尝试连接到我的应用程序时 SSL 握手失败,我需要记录。该应用程序是使用 Spring Boot 和 Java 8 构建的,并部署在 Tomcat 8 上。

在 SSL 握手失败的情况下,由于 TLS 连接断开,日志记录要求可能必须在 Tomcat 层或 Java 中完成,因为在我的案例中 Tomcat 使用底层 JVM 进行 SSL 证书验证。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="keyStore-1.jks" keystorePass="password" keystoreType="jks" truststoreFile="TrustStore.jks" truststorePass="passwrd" truststoreType="jks" clientAuth="want" sslProtocol="TLSv1.2" />

我知道启用调试级别日志记录。

-Djavax.net.debug=ssl

但这会记录大量信息并会减慢进程。并记录成功的 SSL valdiations。有没有办法在 Java 或 Tomcat 级别使用最少的日志单独启用故障案例。

我不是从调试的角度来看这个,因为 SSL 调试日志对此非常有用。此要求更多是出于日志记录和审计目的,启用调试日志不是一个可行的选项。一种仅记录 SSL 发生的错误而不记录所有十六进制/证书数据的机制。

最佳答案

不幸的是,这不太可能。并且与Tomcat无关。记录 SSL 它不是应用程序中标准日志记录的一部分。您可以尝试使用以下选项减少输出:

-Djava.net.debug=handshake

其他一些:

  • 记录 - 打印每个 SSL 记录的踪迹(在 SSL 协议(protocol)级别)。
  • handshake - 打印每条收到的握手消息
  • keygen - 为 secret key 交换打印 key 生成数据。
  • session - 打印 SSL session Activity 。
  • defaultctx - 打印默认的 SSL 初始化信息。
  • sslctx - 打印有关 SSL 上下文的信息。
  • sessioncache - 打印有关 SSL session 缓存的信息。
  • keymanager - 打印有关调用 key 管理器的信息。
  • trustmanager - 打印有关调用信任管理器的信息。
  • 数据 - 用于握手跟踪,打印出每条消息的十六进制转储。
  • verbose - 对于握手跟踪,打印出详细信息。
  • 纯文本 - 对于记录跟踪,打印出记录的十六进制转储。

参见 docs .

如果您真的需要它并且性能对您的应用程序至关重要,您可以检测 SSLSocket (在文档中,您可以阅读有关握手过程的信息)与 ASM/Btrace/etc 并检查其中的握手状态。但在那种情况下,您将没有调试信息 - 只有 true/false。

另见 Tomcat docs具有所有可用设置。在那里你可以读到有 JSSEImplementation类,在 Tomcat 中使用。它是 JSSE 的包装器。

关于java - 仅在使用 Java 的 Tomcat 8+ 上启用记录 SSL 握手失败(审计目的日志),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42857957/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com