我正在尝试从我的适配器点击基于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但是没有任何想法。任何帮助表示赞赏。
答案 0 :(得分:5)
当您提供错误的证书或未提供正确的证书时,会发生SSLPeerUnverifiedException。它与HTTP一起使用的原因是因为它不需要证书;它只需要HTTPS。
在这种情况下,您似乎没有指定服务器将用于创建HTTPS连接的证书。为此你必须做几件事:
创建用于测试目的的证书,或使用您需要使用的证书,具体取决于您的情况。您提供的链接说明了如何创建自己的自定义证书以进行测试。 (请注意,您只应将自定义证书用于测试目的,因为它们不安全,因此不应在生产环境中使用。)
将您拥有的证书放在Java密钥库中,并将Worklight配置为使用所述密钥库。有关详细信息,请参阅http://pic.dhe.ibm.com/infocenter/wrklight/v6r1m0/topic/com.ibm.worklight.deploy.doc/admin/r_ssl_certificate_keystore_setup.html。
完成前两个步骤后,在您拥有的connectionPolicy中,您必须指定SSLCertificateAlias和SSLCertificatePassword。别名是保存在密钥库中的名称,密码是用于加密密钥库的密码。有关详细信息,请查看此处: http://pic.dhe.ibm.com/infocenter/wrklight/v6r1m0/topic/com.ibm.worklight.dev.doc/devref/r_the__connectionpolicy__element.html
这样它应该有用。