如何使用 Tomcat 指定远程 JKS 密钥库?

How to specify remote JKS keystore with Tomcat?

在 Tomcat 中,您使用以下 SSL Connector 配置 server.xml

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    proxyPort=""
    keystoreFile="/etc/path/to/keystore.jks"
    keystorePass="12345"
    keystoreType="jks"
    truststorePass="12345"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" />

...或类似的东西。但是 keyStoreFile 似乎不允许除本地文件路径以外的任何内容。如果我想将我的 JKS 存储在远程服务器上怎么办?能够指定如下内容会很好:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    proxyPort=""
    keystoreFile="http://mycert01.example.org/myapp/keystore.jks"
    keystorePass="12345"
    keystoreType="jks"
    truststorePass="12345"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" />

显然这会带来安全问题,但如果 mycert01.example.org 在 VPN 后面,我认为它不会比本地文件系统上的东西更安全或更不安全。

这可能吗?如果是这样,如何?如果没有,我需要做什么才能让它成为可能?

不,可用 Connector 不可能。您必须重写 Connector 才能实现这一点。否则,如果您映射远程文件系统(我猜是通过挂载它,但这只是一个猜测),您也许可以解决这个问题。我从来没有尝试过在这种情况下这样做,我不推荐这样做。远程托管您的 SSL 密钥库是完全错误的做事方式 - 无论是为了安全还是为了效率。