【问题标题】:Getting javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException. Not able to connect to application on HTTPS?获取 javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException。无法通过 HTTPS 连接到应用程序?
【发布时间】:2012-07-10 14:44:46
【问题描述】:

嗨,我正在使用 tomcat 6 作为网络服务器。我在同一端口的tomcat上安装了两个webbapplication。说 App1 和 App2。 App1 连接到 应用程序2。然后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 with ramesh answer 我还必须做http://www.coderanch.com/t/134384/Security/Getting-error-No-subject-alternative 建议的事情。

【问题讨论】:

  • “App1 连接到 App2”是什么意思?
  • 两个应用程序都使用 https 吗?还是仅适用于 App2?
  • 基本上点击 App1 调用上的链接会转到 App2。然后 App2 再次连接到 App1 以检查一些逻辑 api URLConnection conn = url.openConnection();
  • @a.tereschenkov。当我使用 https 打开单个网站时,它可以工作

标签: java https jsessionid


【解决方案1】:

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

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

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

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

此外,当客户端和服务器都在时,您不必通过 https 进行通信

  • 相同的虚拟机
  • 同一台机器
  • 私有网络

【讨论】:

  • Ramesh 我应该如何添加 App2 的证书应该存在于 App1 所在的 VM 的信任库中
  • 如果是同一个虚拟机,只需将信任库指向您的服务器证书文件。
  • 在 server.xml 中查找 ssl 连接器,它可能具有服务器密钥库。使用与信任库相同的存储和密码。
  • 这里是 App1 的 server.xml 中的条目 。但不知道信任存储在哪里以及如何使用与信任存储相同的存储和密码?两者都在同一个 tomcat 和同一个虚拟机中
【解决方案2】:

似乎您需要从 {tomcat_home}/bin 文件夹中删除本机 tomcat 库(Windows 下的 tcnative-1.dll,可能是 *nix 下的 tcnative-1.so)。如果本地库在类路径中,Tomcat 使用 APR。阅读更多关于配置 SSL here

【讨论】:

  • bin文件夹下没有这样的库
猜你喜欢
  • 2018-03-08
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
相关资源
最近更新 更多