从Worklight Adapter对HTTPS服务器进行Web服务调用 - javax.net.ssl.SSLPeerUnverifiedException:peer未通过身份验证

时间:2014-02-20 10:35:57

标签: ibm-mobilefirst worklight-adapters worklight-server

我正在尝试从我的适配器点击基于REST的HTTPS服务,我的.xml文件看起来像这样,

<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
            <protocol>https</protocol>
            <domain>myco.company.com</domain>
            <port>443</port>    
            <!-- Following properties used by adapter's key manager for choosing specific certificate from key store  
            <sslCertificateAlias></sslCertificateAlias> 
            <sslCertificatePassword></sslCertificatePassword>
            -->     
        </connectionPolicy>
        <loadConstraints maxConcurrentConnectionsPerNode="2"/>
    </connectivity>

我得到了这个例外

Http request failed: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

但是当我使用HTTP协议和不同的服务器IP地址时,一切正常。部署的服务器代码是相同的,服务似乎在浏览器上正常工作。我看到http://pic.dhe.ibm.com/infocenter/wrklight/v5r0m5/index.jsp?topic=%2Fcom.ibm.worklight.help.doc%2Fadmin%2Ft_ibm_worklight_server_and_self-signed_certificates.html但是没有任何想法。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:5)

当您提供错误的证书或未提供正确的证书时,会发生SSLPeerUnverifiedException。它与HTTP一起使用的原因是因为它不需要证书;它只需要HTTPS。

在这种情况下,您似乎没有指定服务器将用于创建HTTPS连接的证书。为此你必须做几件事:

  1. 创建用于测试目的的证书,或使用您需要使用的证书,具体取决于您的情况。您提供的链接说明了如何创建自己的自定义证书以进行测试。 (请注意,您只应将自定义证书用于测试目的,因为它们不安全,因此不应在生产环境中使用。)

  2. 将您拥有的证书放在Java密钥库中,并将Worklight配置为使用所述密钥库。有关详细信息,请参阅http://pic.dhe.ibm.com/infocenter/wrklight/v6r1m0/topic/com.ibm.worklight.deploy.doc/admin/r_ssl_certificate_keystore_setup.html

  3. 完成前两个步骤后,在您拥有的connectionPolicy中,您必须指定SSLCertificateAlias和SSLCertificatePassword。别名是保存在密钥库中的名称,密码是用于加密密钥库的密码。有关详细信息,请查看此处: http://pic.dhe.ibm.com/infocenter/wrklight/v6r1m0/topic/com.ibm.worklight.dev.doc/devref/r_the__connectionpolicy__element.html

  4. 这样它应该有用。