【问题标题】:Client Authentication Tomcat - trustAnchors parameter must be non-empty客户端身份验证 Tomcat - trustAnchors 参数必须为非空
【发布时间】:2017-01-11 12:50:39
【问题描述】:

我知道这个问题似乎没有很多 stackoverflow,例外是与缺少信任库有关 - 但这是我的问题:

  1. 在带有 Java 8.0.71 的 Windows 上使用 Apache Tomcat v7.0.56 作为服务器
  2. 修改了 tomcat/conf/server.xml 以包含 SSL 连接器和 truststoreType="PKCS12", truststoreFile="conf/regtomcat.truststore" truststorePass="password"

我启动了 tomcat,我知道它正在正确读取此信任库文件,因为我最初没有 pkcs12 格式的文件,并且 tomcat 在启动时报告了错误。我也尝试破坏文件位置只是为了看到tomcat启动失败,因为它找不到文件。所以 tomcat 启动正常 - 它正在读取信任库,这必须意味着它存在并且可以读取。

我将一个 p12 文件加载到我的浏览器证书中,然后转到我的应用程序 URL。然后我得到了tomcat错误:

handling exception: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: 
the trustAnchors parameter must be non-empty

鉴于我的委托人存在,并且包含我的证书 - 问题可能是什么?

我使用 keytool 生成了所有证书和信任库。信任库是使用命令创建的

keytool -importcert -alias regClient -storetype PKCS12 -keystore regtomcat.truststore -file regClient.cer

【问题讨论】:

    标签: java tomcat ssl


    【解决方案1】:

    好的 - 问题是证书是使用 JDK 1.8 创建的,而 tomcat 是使用 JRE 1.7 运行的 - 无论出于何种原因,这都会导致问题,因此修复是使用 JRE 1.8,现在一切正常。

    【讨论】:

      【解决方案2】:

      一个可能的原因是,如果我们使用相同的 .jks 文件作为密钥库和信任库,则服务器启动失败并出现以下错误:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须为非空。 Keystore 用于存储 ServerCerts,TrustStore 用于存储 CA 证书。在 .jks 中添加至少一个 CA 证书后,上述问题将得到解决。

      【讨论】:

      • 谢谢,我已将 CA 添加到 jks,现在我什至可以使用 与密钥库和信任库相同的 jks 文件而不会出错。有趣的事实是,没有 CA 的旧 jks 文件在 tomcat 8.0 上工作,但在切换到 tomcat 9.0.56 后,jks 中的 CA 要求出现了。 (尽管,tomcat 是作为基于 Amazon Corretto 的 docker 容器运行的)
      【解决方案3】:

      面临同样的问题。我的密钥库只有网站的私钥对。将公共证书从密钥对一直导入到根目录,并且可以正常工作。

      【讨论】:

        【解决方案4】:

        面临同样的问题。原因更为基本:.jks 文件必须对于运行 tomcat 服务的帐户是可读的。虽然我们将它作为 systemctl 服务(因此从 root 启动/停止),但该帐户是 tomcat,因此 .jks 商店的简单 chown tomcat:tomcat 完成了这项工作!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-08
          • 2018-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多