我希望能够为 tomcat 提供一个预配置的 server.xml 文件,其中包含 SSL 密钥库密码的占位符。我的理解是,可以在 server.xml 文件中使用系统属性,如下所示:
<Connector port="443"
protocol="HTTP/1.1"
acceptorThreadCount="2"
connectionTimeout="10000"
maxKeepAliveRequests="${max.keepAlive}"
maxThreads="${max.threads}"
maxExtensionSize="65536"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreType="PKCS12"
keystoreFile="/var/certs/mycert.p12"
keystorePass="${keystore.pass}" />
然后我可以通过将 CATALINA_OPTS 设置为类似的内容来提供系统属性"$CATALINA_OPTS -Dkeystore.pass=supersecret"
。
然而,从技术上讲,这可行;这将导致密钥库传递泄漏到进程列表中。也就是说,如果我要执行,ps -Af | grep java
我可以看到我在系统属性中传递的位置。
那么,如何在不使用系统属性的情况下向配置外部的 server.xml 提供密码?