完全禁用Java Net SSL调试日志记录

时间:2018-10-22 14:25:47

标签: java debugging ssl logging

我已经找到了大量关于如何为SSL,TLS和类似功能启用javax.net.debug的文档,但是即使在参考文档中,我也没有找到如何以编程方式完全禁用它来覆盖以前的设置。

我的确切问题是,在Tomcat实例中,另一个应用程序执行以下指令:

function my_posts_where( $where ) { 
    $where = str_replace("meta_key = 'blocks_$", "meta_key LIKE 'blocks_%", $where);
    return $where;
}

add_filter('posts_where', 'my_posts_where');

这会导致 catalina.out 文件迅速增大尺寸,这是不必要的。

我已经尝试使用相同的指令从Java代码覆盖它,并使用“ none ”,“ off ”和“ false “值,但没有结果,仍然记录了大量TLS内容。

例如,在我的应用程序中,我添加了以下说明:

System.setProperty("javax.net.debug","all");

但是我仍然有完整的日志。

3 个答案:

答案 0 :(得分:1)

问题在于,tomcat应用程序将覆盖您从命令行中提供的任何值,并且如果无法控制此代码的作用,则无法从命令行参数中真正覆盖它。虽然安全管理器可以阻止设置属性,但只能通过引发异常来做到这一点,这可能会引起更多的问题,而不是解决的问题。

在这种情况下,唯一的选择是在其他代码对其进行设置之后,通过代码自行设置值。

对于javax.net.debug,需要在运行sun.* Debug类的静态静态初始值设定项之前,将选项设置为它的最终值消息将会出现。可以使用任何不用作某些选项的值(空字符串,或者没有一个应禁用它)来禁用它。如果稍后设置,它将无法在事后将其关闭(除非进行一些不良的反射黑客来访问该类的内部,只有在Java 8和更早的版本中才能实现)

答案 1 :(得分:0)

如果有一些启用SSL日志记录的VM参数,请尝试将其删除,此外,您可以检查eclipse.ini文件以查看是否在其中声明了这些参数。

答案 2 :(得分:0)

您可以通过从 IDE 的运行配置中删除以下内容来禁用它:

-Djavax.net.debug=all