Salesforce证书问题:sun.security.validator.ValidatorException:PKIX路径构建失败

时间:2015-08-17 18:00:47

标签: 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.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端有证书更改。这影响了我们的生产基地。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

  1. 首先找出您使用的salesforce api版本。

  2. 然后转到https://login.salesforce.com/services/Soap/u/32.0,点击地址栏上的锁定图标,点击“连接”按钮。选项卡,然后单击链接'证书信息'。在'证书查看器'中,选择标签'详细信息'然后点击“导出”#39;按钮并将证书(sf.com)下载到首选位置。 在这里,32.0是salesforce api版本。

  3. 这是您在Salesforce中使用的API的版本。要获得此功能,请登录https://developer.salesforce.com/并单击“设置”。在左侧导航窗格中,单击Develop下的API。生成其中一个API以检查版本。这并不总是v20.0或32.这可能会有所不同。

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

    Salesforce.com企业Web服务API版本32.0

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

      $ keytool -importcert -file $ somepath / sf.com -keystore $ ESB_HOME / repository / resources / security / client-truststore.jks -alias" sf"

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

答案 1 :(得分:0)

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

我想问题是服务器端的证书会被更改,你的java也不会意识到它。所以我认为你应该努力让Java了解证书的变化。我在上面提供的链接中解释了相同的内容。