【问题标题】:Configure Tomcat to use a trust store other than cacerts将 Tomcat 配置为使用 cacerts 以外的信任库
【发布时间】:2011-07-06 22:40:31
【问题描述】:

我在 Windows 上运行 Tomcat 6,并希望 Tomcat 对 Java 客户端 Web 请求使用除 cacerts 之外的不同信任存储。我试过添加这个设置:

-Djavax.net.ssl.trustStore="C:\ca.keystore"

到注册表中的键:

 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java

但这似乎不起作用。它仍然使用 JRE cacerts 存储。我们的 Java 代码向 HTTPS 端点发出 Web 请求,我想将证书保存在 JRE 以外的密钥存储中,因为在卸载/更新 java 时它会被删除。

【问题讨论】:

  • 考虑到讨论,这个问题应该是“配置 JRE(我在其中运行 Tomcat)[...但这仅对 Tomcat 安装程序而言很重要...]使用默认以外的信任存储”。
  • @Bruno 否,因为该解决方案特定于 Tomcat。查看注册表项。
  • 当然,我只是说这个问题可以澄清(顺便说一句,它属于 ServerFault),因为“配置 Tomcat”通常是指配置其连接器和容器本身。在这里,您完成了跨越整个 JRE 的配置。
  • @Bruno 是的,我同意服务器故障是一个更好的家。这是一个老问题,但我想提出解决方案以防它对其他人有所帮助。它确实帮助了 couple folks 在 java 牧场。
  • @cone 如果 Tomcat 在 Mac 上有启动脚本,您可以在启动脚本中指定这些 Java 初始化参数。

标签: java tomcat ssl https webclient


【解决方案1】:

原来我错过了trustStorePassword。这是解决方案:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java 

-Djavax.net.ssl.trustStore="C:\ca.keystore" 
-Djavax.net.ssl.trustStorePassword="password"

更新:这里的某些 cmets 似乎在此设置和来自 server.xmltruststoreFile 之间存在一些混淆。我创建了一个blog entry 来解释问题(非常详细)以及该解决方案如何解决它以及为什么更改server.xml 没有。

【讨论】:

  • EJP 的回答是正确的,不是吗?通常您在连接器配置中指定信任库(及其密码)(尽管它确实会回退到全局 javax.net.ssl.trustStore* 设置)。
  • @Bruno 不,不在 server.xml 中。这必须做注册表!两者用于不同的目的。这是针对 JVM 的。
  • 啊,你的问题有点混乱。标题和开头谈到了 Tomcat,而您只在结尾提到您的应用程序实际上是一个客户端(就信任存储而言)。
  • @Bruno Tomcat 正在 JVM 上运行。为了改变 Tomcat 针对这个问题的行为,需要对 JVM 进行配置。此更改仅影响运行 Tomcat 的 JVM。
  • 同意。混淆只是因为它不是关于配置 Tomcat,而是它的启动器,它运行 JRE,而 JRE 又运行 Tomcat。你是对的,从你的问题的结尾看它是有道理的,但是一个更清晰的标题和开头可能会更快地给你一个答案:-)
猜你喜欢
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 2017-06-02
  • 2021-01-01
  • 2011-11-21
  • 2013-06-24
  • 2021-06-30
相关资源
最近更新 更多