Tomcat,从 -D 选项中隐藏 javax.net.ssl.keyStorePassword
Tomcat, hide javax.net.ssl.keyStorePassword from -D options
安装在 Tomcat (9.0.36.B.RELEASE) 上的应用程序使用 SSL(在本例中为 IBM MQ)连接到外部源。因此,我需要为此信任库指定一个信任库和密码。
我把它添加到 setenv.sh
中的 JVM_OPTS:
-Djavax.net.ssl.trustStore=/opt/apps/certs/myapplication.truststore
-Djavax.net.ssl.trustStorePassword=TRUSTSTORE-PASSWORD
-Djavax.net.ssl.keyStore=/opt/apps/certs/myapplication.keystore
-Djavax.net.ssl.keyStorePassword=KEYSTORE-PASSWORD
这方面的经典问题,当我这样做时密码是可见的 ps -ef|grep java
(在 RHEL 上运行)。
我看到了一些关于如何执行此操作的建议(例如 Hiding plain text password in JVM startup argumnets. " ps -ef | grep 'javax.net.ssl.keyStorePassword'")。但是这些change/add代码或配置在WAR文件中。
我正在寻找“tomcat”解决方案。有没有办法在 Tomcat 的范围内做到这一点。对 WAR 文件的更改很难实施,因为该应用程序来自供应商。
注意:这不适用于 web.xml 中的连接器配置,因为它只会为传入连接设置 SSL。这里的应用程序正在连接到外部系统(因此从 Tomcat 的角度来看是出站的)。
您可以向 $CATALINA_BASE/conf/catalina.properties
添加其他属性,它们将在 Tomcat 的启动期间获取。正如您肯定知道的那样,系统属性对于 JVM 是全局的,因此无法将此配置仅限于单个应用程序:整个 Tomcat 服务器都会受到影响。
几乎所有 Java 系统属性都可以通过这种方式设置,只有少数例外:
catalina.base
和 catalina.home
(显然),
- Tomcat logging、
的配置
- 在用户代码之前启动的 JMX 和其他工具的配置。
注意:一定要检查VersionLoggerListener
(在server.xml
中定义)是否没有logProps="true"
,否则系统的值属性将被记录。默认情况下,仅记录 JVM 参数。
安装在 Tomcat (9.0.36.B.RELEASE) 上的应用程序使用 SSL(在本例中为 IBM MQ)连接到外部源。因此,我需要为此信任库指定一个信任库和密码。
我把它添加到 setenv.sh
中的 JVM_OPTS:
-Djavax.net.ssl.trustStore=/opt/apps/certs/myapplication.truststore
-Djavax.net.ssl.trustStorePassword=TRUSTSTORE-PASSWORD
-Djavax.net.ssl.keyStore=/opt/apps/certs/myapplication.keystore
-Djavax.net.ssl.keyStorePassword=KEYSTORE-PASSWORD
这方面的经典问题,当我这样做时密码是可见的 ps -ef|grep java
(在 RHEL 上运行)。
我看到了一些关于如何执行此操作的建议(例如 Hiding plain text password in JVM startup argumnets. " ps -ef | grep 'javax.net.ssl.keyStorePassword'")。但是这些change/add代码或配置在WAR文件中。
我正在寻找“tomcat”解决方案。有没有办法在 Tomcat 的范围内做到这一点。对 WAR 文件的更改很难实施,因为该应用程序来自供应商。
注意:这不适用于 web.xml 中的连接器配置,因为它只会为传入连接设置 SSL。这里的应用程序正在连接到外部系统(因此从 Tomcat 的角度来看是出站的)。
您可以向 $CATALINA_BASE/conf/catalina.properties
添加其他属性,它们将在 Tomcat 的启动期间获取。正如您肯定知道的那样,系统属性对于 JVM 是全局的,因此无法将此配置仅限于单个应用程序:整个 Tomcat 服务器都会受到影响。
几乎所有 Java 系统属性都可以通过这种方式设置,只有少数例外:
catalina.base
和catalina.home
(显然),- Tomcat logging、 的配置
- 在用户代码之前启动的 JMX 和其他工具的配置。
注意:一定要检查VersionLoggerListener
(在server.xml
中定义)是否没有logProps="true"
,否则系统的值属性将被记录。默认情况下,仅记录 JVM 参数。