您好我使用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建议的东西。
答案 0 :(得分:1)
因为App1使用https连接到App2。 App2的证书应该位于运行App1的VM的信任库中。
请参阅here以了解如何将证书添加到密钥库。
您可以使用这些系统属性设置信任库
-Djavax.net.ssl.trustStore="C:/test/truststore"
-Djavax.net.ssl.trustStorePassword="test".
此外,当客户端和服务器位于
时,您无需通过https进行通信答案 1 :(得分:0)
好像你需要从{tomcat_home} / bin文件夹中删除本机tomcat库(windows下的tcnative-1.dll,或者* nix下的tcnative-1.so)。如果本机库在类路径中,则Tomcat使用APR。详细了解如何配置SSL here