sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求的目标错误

时间:2016-07-17 22:58:17

标签: java ssl soap keystore

我在运行以下代码时遇到错误:

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();


    }

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

1 个答案:

答案 0 :(得分:2)

您必须将服务器证书或根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");