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

问题描述:

嗨,我使用tomcat 6作为网络服务器。我有两个webbapplication安装在同一端口上的tomcat上。说App1和App2。 App1连接到 App2。然后App2再次使用jessionid连接到App1(所以app2发送的url是http://localhost/App1;jessionid=sessionidOfAp11) 只要我在http上,它就可以很好地工作。但是,只要我移动到https App2不能连接到App1与相同的网址。 另一个有趣的事实是,如果我在Brower上键入相同的URL,它将连接到App1。 我不明白这里会有什么秘密吗?获取javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException。无法连接到HTTPS上的应用程序?

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

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) 

回答

家伙感谢答复。阿隆与ramesh答案我也不得不做http://www.coderanch.com/t/134384/Security/Getting-error-No-subject-alternative建议的东西。

+0

“App1连接到App2”是什么意思? – 2012-03-05 12:29:42

+0

你对这两个应用程序使用https吗?还是仅适用于App2? – 2012-03-05 12:33:24

+0

基本上点击App1上的链接就可以进入App2。然后App2再次连接到App1检查一些逻辑与api URLConnection conn = url.openConnection(); – 2012-03-05 12:37:37

因为App1使用https连接到App2。 App2的证书应该存在于虚拟机的信任存储中,其中App1运行

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

您可以使用这些系统属性

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

而且你没有在客户端和服务器那里

  • 同一VM
  • 同一台机器
  • 通信通过https设置信任
  • 专用网络
+0

Ramesh我应该如何添加App2的证书应该存在于App1所在的虚拟机的信任存储区中 – 2012-03-05 12:52:48

+0

如果同一个虚拟机只指向信任库到您的服务器证书文件。 – 2012-03-05 12:55:50

+0

2012-03-05 13:00:31

好像你需要从{tomcat_home}/bin文件夹(windows下的tcnative-1.dll,或者* nix下的tcnative-1.so)中删除本地的tomcat库。如果本机库位于classpath中,Tomcat将使用APR。阅读更多关于配置SSL的信息here

+0

bin文件夹下没有这样的库 – 2012-03-05 12:54:35