我知道这个问题似乎没有堆栈溢出很多,例外情况是缺少信任库 - 但这是我的问题:
我启动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
答案 0 :(得分:2)
好的 - 问题是证书是使用JDK 1.8创建的,并且tomcat是使用JRE 1.7运行的 - 无论出于何种原因导致问题,所以修复是使用JRE 1.8,现在一切正常。
答案 1 :(得分:0)
一个可能的原因可能是,如果我们使用相同的.jks文件作为密钥库和信任库,则服务器启动将失败,并出现以下错误:java.security.InvalidAlgorithmParameterException:trustAnchors参数必须为非空。 密钥库用于存储ServerCerts,信任库用于存储CA证书。在.jks中添加至少一个CA证书后,上述问题将得到解决。
答案 2 :(得分:0)
面对同样的问题。我的密钥库只有网站的私钥对。从密钥对一直到根都导入了公共证书,并且有效。