无法解决PKIX路径构建失败

时间:2015-06-05 19:17:53

标签: https certificate ibm-mobilefirst mobilefirst-adapters

我尝试使用以下代码连接到https网络服务。

adapter.xml:

<connectivity>
    <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
        <protocol>https</protocol>
        <domain>somewhere.com</domain>
        <port>443</port>    
        <connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>
        <socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>
        <maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>
    </connectionPolicy>
</connectivity>

impl.js:

function getTest() {
    var input = {
        method : 'GET',
        returnedContentType : 'json',
        path : "WS.svc"
    };

    return WL.Server.invokeHttp(input);
}

不幸的是,当我尝试调用适配器时会出现此错误:

{
   "errors": [
      "Runtime: Http request failed: 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"
   ],
   "info": [
   ],
   "isSuccessful": false,
   "warnings": [
   ]
}

我已将WS的公共证书(从浏览器访问并从证书详细信息中获取)添加到Program Files(C:\Program Files\Java\jdk_version\jre\lib\security)中的Java文件夹中,但问题仍然存在。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用MobileFirst Platform时,您所遵循的说明不正确 按照this user documentation topic中所述的步骤(适用于Worklight 6.2,但也适用于MFPF 6.3及更高版本)。

  • 不要从浏览器导出证书,因为此操作会添加浏览器元数据和其他不应存在的工件。而是使用诸如OpenSSL之类的工具来获取证书(在文档中描述)
  • 然后,证书应存储在应用程序服务器的密钥库中,而不是存储在Java的JVM中。