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

标签 java tomcat ssl certificate tomcat6

我的 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 的受信任 key 中。我不想说:“在我的机器上运行 Java 的每个应用程序都应该信任该证书”。只有 Tomcat(或运行 Tomcat 的用户)应该信任它。

所以我尝试将它导入到位于 ~/.keystore 的 tomcat 用户的 keystore 中,并设置 Tomcat 的 <Connector>具有这些属性:

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

然而,这根本行不通(我相信,这只是针对我的Tomcat的服务器证书,而不是外国服务器的服务器证书,对吧?)

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

有没有办法使用外部服务器的服务器证书设置 Tomcat,或者可以向 java 添加一些命令行参数?这使得我的 keystore (和 keystore 密码)可用于 JVM 实例?

最佳答案

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

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

因此这也适用于 Tomcat。

关于java - 将外部服务器的自签名证书添加到我的 Tomcat 的受信任证书中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6497183/

相关文章:

java - JFrame 在两个不同面板上使用一个组件使其消失

java - org.apache.commons.text 的依赖项是什么?

java - ArrayBlockingQueue add 方法是即时的吗?

java - 尝试使用 Tomcat 在 Windows 中安装 openCMS,它显示 404 错误

xml - Web.xml:url-pattern 标签是相互关联的吗?

java - 使用标准端口在 Apache 和 Apache tomcat 之间共享 SSL

wordpress - wordpress ssl 出现 404 错误

php - 为什么 Soap 无法连接到 HTTPS?

ssl - 停用网站而非服务器的 TLS 1.0 和 TLS 1.1

java - 从命令行启动 Tomcat 7 (Windows)