我们的Web应用程序当前在Tomcat 7.0下运行,并使用客户端证书进行身份验证。我一直在考虑至少升级到Tomcat 8.5。为了进行测试,我使用集成测试套件中生成的证书进行设置。此过程将创建一个带有一个条目的truststore.jks文件,该密钥工具显示为PrivateKeyEntry。在Tomcat 7.0上这可以正常工作,但是当我在Tomcat 8.5(或9.0)下启动时,我得到一个堆栈跟踪,其中包含错误消息“ trustanchors参数必须为非空”。
搜索该错误表明找不到信任库文件(这里不是问题-如果没有文件,我会得到不同的堆栈跟踪)或信任库为空。当我从信任库中导出条目并将其重新导入时,keytool将其添加为TrustedCertEntry,并且一切正常-Tomcat和Web应用程序启动,并且客户端身份验证起作用。
这是为什么,为什么取决于Tomcat版本?以这种方式重新导入证书表明我确实有解决方法,但是我想了解这里存在的问题,因为我并不真正了解PrivateKeyEntry和trustedCertEntry之间的区别。
谢谢。