我的Tomcat需要使用SSL(TLS)连接到 另一个 Web服务器(位于https://foreign.example.com)。
foreign.example.com有一个我信任的自签名证书。当然,默认情况下,我的Tomcat不是默认的-所以我必须告诉它。一种方法是:
$JRE/bin/keytool -import -alias my -file ssl-cert-myselfsigned.cer -keystore $JRE/lib/security/cacerts
这有效 :我的Tomcat允许SSL连接。
但是,我 不喜欢这样 :将证书导入到Java安装的受信任密钥中。我不想说:“在我的计算机上运行Java的每个应用程序都应该信任该证书”。只有Tomcat(或运行Tomcat的用户)才能信任它。
因此,我尝试将其导入到tomcat用户的keystore中~/.keystore,并<Connector>使用以下属性设置Tomcat的属性:
~/.keystore
<Connector>
keystoreFile="${user.home}/.keystore" keystorePass="thePassphraseICreatedTheKeystoreWith"
但是,这根本不起作用(我相信,这仅适用于Tomcat的服务器证书,而不适用于外部服务器的服务器证书,对吗?)
我用truststoreFile/ truststorePass属性尝试了相同的方法,但是它们也不起作用。(属性记录在http://tomcat.apache.org/tomcat-6.0-doc/config/http.html)
truststoreFile
truststorePass
是否可以使用外部服务器的服务器证书设置Tomcat,或者添加一些命令行参数以java使我的密钥库(和密钥库密码)可用于JVM实例?
java
可以使用以下cmd参数运行JBoss(基于Tomcat)。cacerts文件(或您要为其命名的文件)必须包含端点的证书。
-Djavax.net.ssl.trustStore = C:\ Applications \ jboss-as \ server \ default \ conf \ cacerts -Djavax.net.ssl.trustStorePassword = changeit
因此,这也适用于Tomcat。