Soap Salesforce证书问题:sun.security.validator.validator异常:PKIX路径生成失败

Soap Salesforce证书问题:sun.security.validator.validator异常:PKIX路径生成失败,soap,salesforce,wso2,wso2carbon,Soap,Salesforce,Wso2,Wso2carbon,通过WSO2连接到Salesforce时,我收到以下错误 Unable to sendViaPost to url[https://semtech.my.salesforce.com/services/Soap/c/26.0/xxxxxJelG/0xxxxk] {org.apache.axis2.transport.http.HTTPSender} org.apache.axis2.AxisFault: Connection has been shutdown: javax.net.ssl.SS

通过WSO2连接到Salesforce时,我收到以下错误

Unable to sendViaPost to url[https://semtech.my.salesforce.com/services/Soap/c/26.0/xxxxxJelG/0xxxxk] {org.apache.axis2.transport.http.HTTPSender}
org.apache.axis2.AxisFault: Connection has been shutdown: 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
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1293)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1305)
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:43)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
    at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
    at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
    at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)
    at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:194)
    at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1690)
    ... 43 more
似乎Salesforce端有证书更改。这影响了我们的生产现场。如何解决此问题?

请尝试检查。希望这会有帮助

我想问题是服务器端的证书可能已经被更改,而您的java不会意识到这一点。因此,我认为您应该努力让Java知道证书中的更改。我已经在上面提供的链接中对此进行了解释

  • 首先找出您使用的salesforce api版本

  • 然后转到,单击地址栏上的锁定图标,单击“连接”选项卡,然后单击“证书信息”链接。从“证书查看器”中,选择“详细信息”选项卡并单击“导出”按钮,然后将证书(sf.com)下载到首选位置。 这里32.0是salesforce api版本

  • 这是您在Salesforce中使用的API版本。要获取此信息,请登录并单击设置。在左侧导航窗格中,单击“开发”下的API。生成其中一个API以检查版本。这并不总是v20.0或32。这可能是不同的

    例如,在将生成的wsdl中,将显示以下注释。它显示了API版本。在本例中,它是v32.0

    Salesforce.com企业Web服务API 32.0版

  • 下载后,发出以下命令将salesforce的公共证书导入client-truststore.jks

    $keytool-importcert-file$somepath/sf.com-keystore$ESB_HOME/repository/resources/security/client-truststore.jks-别名“sf”

  • 重新启动WSO2 ESB服务器并再次调用API,您将获得预期的结果


  • 您好,我尝试添加新证书,它说该证书已经存在。尝试添加到哪里?Java密钥库?@Gopi:别忘了接受这个答案。要执行此操作,请单击问题左侧的勾号,使其变为绿色。这就是我们如何在堆栈溢出时将问题标记为已解决的问题。