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

Sat*_*ran 2 worklight-adapters worklight-server ibm-mobilefirst

我试图从我的适配器点击基于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>
Run Code Online (Sandbox Code Playgroud)

我得到了这个例外

Http request failed: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
Run Code Online (Sandbox Code Playgroud)

但是当我使用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但是没有得到任何想法.任何帮助表示赞赏.

Dan*_*lez 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

有了它应该工作.