我有一个非常奇怪的问题,需要一些提示。我收到了客户发送的证书,需要安装才能访问HTTPS webservice。该证书已经在Windows和Linux操作系统中安装,使用keytool命令。
keytool -import -alias ca -file somecert.cer -keystore cacerts –storepass changeit
当我在Windows Tomcat上部署应用程序时,可以与HTTPS Web服务器通信。但是Linux Tomcat给了我一个错误:
“Caused by:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径,在sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:236)中 at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:194) atsun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:216)”
这意味着它找不到证书。证书位于Java安全性cacerts中。我使用了“keytool-list”命令并且它在那里。
不知道为什么在Windows上可以工作,而在Linux上不能。我已经尝试在我的Servlet中设置参数。
System.setProperty("javax.net.debug", "all");
System.setProperty("javax.net.ssl.trustStore", "/usr/java/jdk1.5.0_14/jre/lib/security/cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
它仍然无法工作。
我的问题是:
1.有人知道为什么这不起作用吗?我已经尝试了所有的方法?
2.如何启用Tomcat的SSL调试。设置System.setProperty("javax.net.debug", "all")
是否有效?出于某种原因,我在Catalina.out中看不到任何SSL调试信息。我需要改变其他东西吗?我应该看到哪种类型的调试信息。
非常感谢您的帮助,我已经没有任何想法了。