支付宝接口集成部署到WebSphere6.1.0.21证书认证No trusted certificate found解决方案

公司近来向客户开通了支付宝渠道以进行支付。我部门负责集成支付宝的接口到公司的应用中。在本地开发环境为Tomcat5+ 与JDK1.5+,一切很顺利。但打包部署到测试环境WebSphere6.1.0.21和JDK1.5+的时候,遇到了中文乱码(支付宝文档有提供解决方案)与验证是否是支付宝请求时出现问题。支付宝请求时出现的证书认证问题如下:
...
javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: No trusted certificate found
...
com.ibm.net.ssl.www2.protocol.https.a.getInputStream(a.java:13)
com.alipay.util.AlipayNotify.checkUrl(AlipayNotify.java:109)
com.alipay.util.AlipayNotify.verifyResponse(AlipayNotify.java:90)
com.alipay.util.AlipayNotify.verify(AlipayNotify.java:43)
...
Caused by: com.ibm.jsse2.util.h: No trusted certificate found
...

看样子是要安装证书,但一时联系不到支付宝技术支持。由于时间比较急,只好找其他的办法。上网查找解决方案,大多数都是说要安装证书或者没有答案的问题帖子。由于对WebSphere服务器不是很了解,平时很少会在后台调用https接口,一下子没了头绪。最后尝试在stackoverflow(http://stackoverflow.com/)再查一把看看吧。一查,没想真有人提问过,并且还有答案。于是马上让开发的同事按方案进行修改,部署上去,测试,OK了。
点击查看解决方案,答案里面貌似还提供了另外一种方式的解决办法的链接。
最后说一下解决的方案思路是重新定义建立https链接的org.apache.http.conn.ssl.SSLSocketFactory类,改变其证书信任管理器的规则(不验证证书,信任全部),从而绕过证书认证。

由于知识水平以及英文水平有限,对答案的理解可能有误,欢迎各位拍砖。

猜你喜欢

转载自chengshangqian.iteye.com/blog/1766748
今日推荐