将证书导入到 Java 密钥库,JVM 忽略新证书
2022-09-01 23:12:20
我正在尝试在Tomcat 6上运行一个应用程序,以通过SSL连接到LDAP服务器。
我使用以下方法将服务器的证书导入密钥库:
C:\Program Files\Java\jdk1.6.0_32\jre\lib\security>keytool -importcert -trustcacerts -file mycert -alias ca_alias -keystore "c:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts"
当我在打开SSL调试的情况下启动Tomcat时,根据日志,Tomcat正在使用正确的证书文件:
trustStore is: C:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts
但是,Tomcat 不会添加我刚刚导入的证书 - cacerts 文件中的所有其他证书都打印到日志中 - 并且连接失败:
handling exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
重新启动 Tomcat 没有帮助。我已经用keytool -list命令验证了文件中确实存在新的证书。
为什么Tomcat一直忽略我的新证书?
编辑:
似乎该问题是由Windows 7 VirtualStore引起的。Keytool创建了cacert文件的新副本,Tomcat使用了原始文件。