客户端身份验证 Tomcat - trustAnchors 参数必须非空

Age*_*t96 5 java ssl tomcat

我知道这个问题似乎没有很多 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
Run Code Online (Sandbox Code Playgroud)

鉴于我的信任库存在,并且包含我的证书 - 问题可能是什么?

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

keytool -importcert -alias regClient -storetype PKCS12 -keystore regtomcat.truststore -file regClient.cer
Run Code Online (Sandbox Code Playgroud)

Age*_*t96 3

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