猿问

解析javax.net.ssl.SSLHandshakeException:sun.security

这是最初的问题。

我得到了这个错误:

详细消息sun.security.valdator.ValidatorException:PKIX路径构建失败:
sun.security.provider.certpath.SunCertPathBuilderException:无法找到被请求目标的有效证书路径

导致javax.net.ssl.SSLHandshakeException:sun.security.valdator.valdatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到被请求目标的有效证书路径

我使用Tomcat 6作为Web服务器。我有两个HTTPS Web应用程序安装在不同的Tomcat在不同的端口,但在同一台机器上。说App1(port 8443)App2(port 443)App1连接到App2..什么时候App1连接到App2我得到了上面的错误。我知道这是一个非常常见的错误,所以在不同的论坛和网站上遇到了许多解决方案。我有下面的条目server.xml两只猫:

keystoreFile="c:/.keystore" keystorePass="changeit"

每个站点都有相同的理由,即app2提供的证书不在app1JVM的可信存储中。这似乎也是正确的,当我试图点击相同的网址在IE浏览器,它工作(在变暖,这个网站的安全证书有问题。在这里,我说继续这个网站)。但是,当Java客户端(在我的例子中)命中相同的URL时,我会得到上面的错误。因此,在信任库中,我尝试了以下三个选项:

执行部分第1段

System.setProperty("javax.net.ssl.trustStore", "C:/.keystore");System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

执行部分第2段在环境变量中设置以下

CATALINA_OPTS -- param name-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value

执行部分第3段在环境变量中设置以下

JAVA_OPTS -- param name-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value

但什么都没起作用 .

最后起作用的是什么中建议的Java方法。如何使用ApacheHttpClient处理无效的SSL证书?帕斯卡尔·蒂文特,即执行程序InstallCert。

但是这种方法对于devbox的设置很好,但是我不能在生产环境中使用它。

当我提到相同的值时,我想知道上面提到的三种方法为什么不起作用。server.xmlapp2通过设置信任存储中的服务器和相同的值

System.setProperty("javax.net.ssl.trustStore", "C:/.keystore") and System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

在……里面app1节目。

关于更多信息,我是这样建立连接的:

URL url = new URL(urlStr);URLConnection conn = url.openConnection();if (conn instanceof HttpsURLConnection) {

  HttpsURLConnection conn1 = (HttpsURLConnection) url.openConnection();

  conn1.setHostnameVerifier(new HostnameVerifier() {
    public boolean verify(String hostname, SSLSession session) {
      return true;
    }
  });

  reply.load(conn1.getInputStream());


HUH函数
浏览 6624回答 4
4回答
随时随地看视频慕课网APP

相关分类

Java
我要回答