解决javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败错误?
编辑:-试图在我的博客上以更合理的方式格式化问题和接受的答案 这是原始问题。 我收到此错误: 详细消息sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法找到到请求目标的有效认证路径 导致javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径 我正在使用Tomcat 6作为Web服务器。我有两个HTTPS Web应用程序安装在不同端口上但在同一台机器上的不同Tomcat上。说App1(port 8443)和 App2(port 443)。App1连接到App2。当App1连接到App2我得到以上错误。我知道这是一个非常常见的错误,因此在不同的论坛和站点上遇到了许多解决方案。我在server.xml两个Tomcat中都有以下条目: keystoreFile="c:/.keystore" keystorePass="changeit" 每个站点都表示由app2颁发的证书不在app1 jvm的受信任存储区中的相同原因。当我尝试在IE浏览器中命中相同的URL时,这似乎也是正确的(工作正常,此网站的安全证书有问题。在这里我说继续浏览此网站)。但是当Java客户端(在我的情况下)击中相同的URL时,我得到了上面的错误。因此,将其放入信任库中,我尝试了以下三个选项: 选项1 System.setProperty("javax.net.ssl.trustStore", "C:/.keystore"); System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); Option2 在环境变量中进行以下设置 CATALINA_OPTS -- param name -Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value Option3 在环境变量中进行以下设置 JAVA_OPTS -- param name -Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value 但是没有任何效果。 最后 执行的工作是执行如何使用Apache HttpClient处理无效的SSL证书中建议的Java方法?由Pascal Thivent设计,即执行程序InstallCert。 但是这种方法对于devbox设置来说很好,但是我不能在生产环境中使用它。 我很奇怪,为什么三种方法时,我已经中提到的相同值上面提到没有工作server.xml的app2服务器和相同的价值观在信任的设置 System.setProperty("javax.net.ssl.trustStore", "C:/.keystore") …