【问题标题】:Web Client Application receives a "unable to find valid certification path to requested target"Web 客户端应用程序收到“无法找到请求目标的有效证书路径”
【发布时间】:2016-06-18 17:55:19
【问题描述】:

我通过创建自定义证书成功地在远程服务器上的 weblogic 上配置了 HTTPS。

在客户端(与运行 weblogic 的计算机不同的计算机)上,我使用从 Internet 下载的 InstallCert.java 资源文件安装了服务器证书。我将 jssecacerts 文件复制到我的 JAVA_HOME/jre/lib/security/ 文件夹中,并编写了一个简单的 JAX-WS 独立应用程序来测试它:

URL url = new URL("https://IP:Port/app/service?wsdl");
QName qname = new QName("http://service.org/", "queryservice");

HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> hostname.equals(IP));

Service service = Service.create(url, qname);
QueryService port = service.getPort(QueryService.class);

它奏效了!伟大的。精彩的。所以我在我的 web 应用程序上实现了同样的东西,将它部署在我笔记本电脑上的 weblogic 服务器上,我尝试访问相同的 web 服务,就像我的独立应用程序一样,我一直得到一个 sun.security。 provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效认证路径异常。

我查看了几个教程,他们一直在说同样的话:一旦我将 jssecacerts 文件放在 JAVA_HOME/jre/lib/security/ 中,一切都会好起来的。

我有什么遗漏吗?

【问题讨论】:

    标签: java web-services ssl weblogic12c


    【解决方案1】:

    好的。事实证明,weblogic 客户端服务器仅将 JRE 中的 cacerts 视为可识别的密钥库,而不是 jssecacerts。我不得不从 jssecacerts 导出服务器证书并将其导入 cacerts - 这是我错过的重要一步。

    这些是步骤:

    1. https://github.com/escline/InstallCert 获取 InstallCert.java 文件后,运行 java InstallCert [host]:[port](输入您要在列表中添加的证书的给定列表编号当您运行命令时 - 可能只是 1)
    2. 运行命令,keytool -exportcert -alias [host]-1 -keystore jssecacerts -storepass changeit -file [host].cer
    3. 然后运行以下命令:keytool -importcert -alias [host] -keystore [系统密钥库的路径] -storepass changeit -file [host].cer

    之后,您应该会没事的。您的系统密钥库应该是 cacerts。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 2011-10-18
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多