获取javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException。无法连接到HTTPS上的应用程序?

时间:2012-03-05 12:26:55

标签: java https jsessionid

您好我使用tomcat 6作为网络服务器。我在同一端口上的tomcat上安装了两个webbapplication。说App1和App2。 App1连接到 App2。然后App2再次使用jessionid连接到App1(所以app2发送的url是http://localhost/App1;jessionid=sessionidOfAp11) 只要我在http上,它就完美无缺。但是一旦我转到https App2就无法使用相同的URL连接到App1。 另一个有趣的事实是,如果我在Brower上键入相同的URL,它将连接到App1。 我没有得到这里的神秘感?

编辑: - 这是我得到的确切错误

 Caused by: sun.security.validator.ValidatorException: PKIX path building failed:     sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid  certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at sun.security.validator.Validator.validate(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
... 53 more
 Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)

答案

伙计们,谢谢你的回答。 Alon与ramesh的回答我也必须做http://www.coderanch.com/t/134384/Security/Getting-error-No-subject-alternative建议的东西。

2 个答案:

答案 0 :(得分:1)

因为App1使用https连接到App2。 App2的证书应该位于运行App1的VM的信任库中

请参阅here以了解如何将证书添加到密钥库。

您可以使用这些系统属性设置信任库

    -Djavax.net.ssl.trustStore="C:/test/truststore"  
    -Djavax.net.ssl.trustStorePassword="test".

此外,当客户端和服务器位于

时,您无需通过https进行通信
  • 相同的VM
  • 同一台机器
  • 私人网络

答案 1 :(得分:0)

好像你需要从{tomcat_home} / bin文件夹中删除本机tomcat库(windows下的tcnative-1.dll,或者* nix下的tcnative-1.so)。如果本机库在类路径中,则Tomcat使用APR。详细了解如何配置SSL here