一尘不染

将外部服务器的自签名证书添加到Tomcat的受信任证书中

tomcat

我的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的属性:

keystoreFile="${user.home}/.keystore"
keystorePass="thePassphraseICreatedTheKeystoreWith"

但是,这根本不起作用(我相信,这仅适用于Tomcat的服务器证书,而不适用于外部服务器的服务器证书,对吗?)

我用truststoreFile/
truststorePass属性尝试了相同的方法,但是它们也不起作用。(属性记录在http://tomcat.apache.org/tomcat-6.0-doc/config/http.html

是否可以使用外部服务器的服务器证书设置Tomcat,或者添加一些命令行参数以java使我的密钥库(和密钥库密码)可用于JVM实例?


阅读 280

收藏
2020-06-16

共1个答案

一尘不染

可以使用以下cmd参数运行JBoss(基于Tomcat)。cacerts文件(或您要为其命名的文件)必须包含端点的证书。

-Djavax.net.ssl.trustStore = C:\ Applications \ jboss-as \ server \ default \ conf \ cacerts -Djavax.net.ssl.trustStorePassword = changeit

因此,这也适用于Tomcat。

2020-06-16