如何使用 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 密钥库是完全错误的做事方式 - 无论是为了安全还是为了效率。
在 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 密钥库是完全错误的做事方式 - 无论是为了安全还是为了效率。