如何让IBM Worklight 6.1 HTTP Adapter适配TLS1.2的SOAP服务
解决IBM Worklight 6.1 HTTP Adapter适配TLS1.2 SOAP服务的问题
你遇到的javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated错误,本质是Worklight 6.1默认配置没有适配TLS1.2的握手要求,再加上证书信任链的问题。下面是具体的解决步骤:
1. 强制Worklight Server的JVM启用TLS1.2支持
Worklight 6.1默认的JVM参数并未开启TLS1.2,需要手动添加系统参数:
- 如果部署在WebSphere Liberty:在
server.xml的<jvmOptions>节点中添加:<jvmOptions> <option>-Dhttps.protocols=TLSv1.2</option> <option>-Djdk.tls.client.protocols=TLSv1.2</option> </jvmOptions> - 如果是传统WebSphere Application Server:登录管理控制台,找到对应服务器的Java虚拟机配置,在「通用JVM参数」中加入上述两个参数。
- 其他应用服务器(如Tomcat):修改启动脚本,在
JAVA_OPTS变量中添加这两个参数。
2. 导入第三方SOAP服务的SSL证书到Worklight信任库
TLS1.2对证书链的验证更严格,需要确保目标服务的证书在Worklight的信任范围内:
- 先导出目标服务的证书(使用openssl命令):
openssl s_client -connect mydomain.com:8080 -tls1_2 < /dev/null | openssl x509 -outform PEM -out securedSOAPService.crt - 将证书导入到Worklight使用的JRE信任库(默认是
cacerts):
注意:默认信任库密码是keytool -import -alias securedSOAPService -file securedSOAPService.crt -keystore $JAVA_HOME/jre/lib/security/cacertschangeit,导入时需要确认信任该证书。
3. 修改HTTP Adapter配置,明确指定TLS版本
在你的adapter.xml的<connectionPolicy>中添加<sslProtocol>节点,强制适配器使用TLS1.2:
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType"> <protocol>https</protocol> <domain>mydomain.com</domain> <port>8080</port> <sslProtocol>TLSv1.2</sslProtocol> <!-- 新增这一行 --> </connectionPolicy>
修改完成后重新部署适配器。
4. 确认Worklight使用的JDK版本
TLS1.2需要JDK的版本支持:JDK 7u9及以上版本才完整支持TLS1.2,JDK 8则默认支持。确保Worklight服务器使用的JDK符合要求,如果版本过低,建议升级到JDK 7u25以上或者直接使用JDK 8。
完成以上步骤后,重启Worklight服务器,测试securedSOAPService过程,应该就能正常访问TLS1.2的SOAP服务了。
内容的提问来源于stack exchange,提问作者sohel shaikh
相关产品推荐
相关产品推荐

