【问题标题】:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target errorsun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标错误的有效证书路径
【发布时间】:2016-11-20 11:15:52
【问题描述】:

在我运行以下代码的地方出现错误:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我尝试将证书添加到 JDK 的 CAcerts 密钥库,但错误没有改变。他们无论如何要弄清楚它正在从哪个密钥库中读取?还是这个问题是别的什么?

public static void main(String args[]) throws Exception {

        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
        SOAPConnection soapConnection = soapConnectionFactory.createConnection();


        String url = "https://www.mywebservice.com/ws";


    SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(),url);



        // print SOAP Response
        System.out.print("Response SOAP Message:");
        soapResponse.writeTo(System.out);

        soapConnection.close();


    }

谢谢您,我很乐意提供所需的任何其他详细信息。

【问题讨论】:

标签: java ssl soap keystore


【解决方案1】:

您必须将服务器证书或根 CA 添加到 JDK 使用的信任库中。默认使用jre/lib/security/cacerts

如果您已经导入了服务器证书,请确认您实际上使用的是正确的 JDK,或者证书已成功导入。您可以使用http://www.keystore-explorer.org/ 之类的 GUI 工具或使用 keytool

您还可以使用包含服务器证书的 JKS 文件来使用您自己的信任库(推荐)。这样配置用法

System.setProperty ("javax.net.ssl.trustStore", path_to_your_trustore_jks_file);
System.setProperty ("javax.net.ssl.trustStorePassword", "password");

【讨论】:

  • 感谢这绝对帮助了我。我正在尝试使用 java 运行soap服务,同时我必须配置这些属性:System.setProperty ("javax.net.ssl.trustStore", "C:\\Users\\username\\My Softwares\\my cacerts\\cacertscopy"); System.setProperty ("javax.net.ssl.trustStorePassword", "changeit"); System.setProperty ("javax.net.ssl.trustStoreType","JKS");,我还从 KEYSTORE.ORG 下载密钥库和我们服务器的导入证书。最好再制作一份 cacerts 文件并保存在工作项目下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 2022-06-14
  • 2020-06-15
  • 2017-04-22
  • 2013-02-03
  • 1970-01-01
相关资源
最近更新 更多