部属到WebSphere中的Application在访问https协议的资源时报错如下(省略号是我省去的异常打印).
。。。
[9/19/10 3:19:32:457 CDT] 00000056 SystemErr R at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
[9/19/10 3:19:32:457 CDT] 00000056 SystemErr R Caused by: java.security.cert.CertificateException: Certificate not Trusted
[9/19/10 3:19:32:457 CDT] 00000056 SystemErr R at com.ibm.jsse.bi.a(Unknown Source)
[9/19/10 3:19:32:457 CDT] 00000056 SystemErr R at com.ibm.jsse.bi.checkServerTrusted(Unknown Source)
[9/19/10 3:19:32:457 CDT] 00000056 SystemErr R at com.ibm.jsse2.ba.checkServerTrusted(Unknown Source)
[9/19/10 3:19:32:457 CDT] 00000056 SystemErr R ... 195 more
[9/19/10 3:19:32:476 CDT] 00000056 SystemErr R javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificate not Trusted
at com.ibm.jsse2.bx.a(Unknown Source)
。。。
解决这个问题,我们尝试了几个办法,主要的思路是将被访问网站的证书导入到部署了Application的WebSphere的证书储存文件中。
导出被访问网站的证书:
使用IE浏览器打开被访问网站,并点击View Certificate
点击Copy to File 保存.
首先将证书导入到:
$INSTALL_HOME/AppServer/profiles/wp_profile/etc/DummyServerTrustFile.jks
错误依然存在
然后将证书导入到:
$INSTALL_HOME/AppServer/java/jre/lib/security/cacerts
重启SERVER后错误消失,注意重启Server是全部重启,portal自带的Server1和WebSphere_Portal server。
导入证书可以使用WebSphere自带的ikeyman或者JRE自带的keytool,具体办法自己摸索一下就行了。