使用JUnit测试通过 HttpClient(https协议)访问支付宝接口时不能自动获得证书的解决办法...

最近在做一个通过 HttpClient 访问支付宝接口的东东,由于支付宝那边提供的是 https 的协议,所以在实现的过程中碰到了 N 多问题,现在拿出其中几个和大家一起分享。

    再这之前还碰到一个 JUnit 环境配置的问题,稍后会写一份文档和大家一起分享。

    下面正式开始进入作孽一样的调试过程,苦哉苦哉 …… 如果取经九九八十一难一样

    第一难: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found

       Baidu,google 先,网上有很多资料不过按照上面的步骤还是解决不了我的问题,不过这些资料对我以后的理解还是有很大帮助的,至少让我知道 HttpClient  ( https )是无法自动获得证书的 ,整整搞了快 1 天还是搞不定。由于我机器同时装了 Jdk1.4 和 Jdk1.5 这个版本, Eclipse 是用 Jdk1.5 的,所以我索性将 Jdk1.4 和 Jdk1.5 一股脑儿统统删除,重新装 Jdk1.5 和重新配置 Eclipse 环境,这下再运行,哈哈!!!上面的 Exception 不见了,有出现了其它一个错误,下面来看第二难(莫明奇妙,还需要继续找资料为啥会好的)。

       第二难: sun.security.validator.ValidatorException : PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException : unable to find valid certification path to requested target

    郁闷,这个问题网络上还找不到很类似的情况,不过当时想肯定和 CA 证书是有关系的,最后发现这个结论还是有用的 ,进入解决 第二难的步骤:

1.     访问 https://www.aplipay3.net

2.     IE 自动弹出安全警报界面,点击“查看证书”

3.     在证书界面,点击“详细信息”,“复制到文件”

4.     在证书导出向导界面,点击“ DER 编码二进制 X.509”

5.     导出文件为 alipay.cer

6.     将 alipay.cer 拷贝到 D:\Program Files\Java\jre1.5.0\lib\security ,而不是 D:\Program Files\Java\jdk1.5.0\jre\lib\security (这个可能和 Eclipse 的环境设置也有关系)

7.     然后用 KeyTool 工具将 alipay.cer 导入 D:\Program Files\Java\jre1.5.0\lib\security\ 目录下的 cacert 文件 ( 注意而不是 D:\Program Files\Java\jdk1.5.0\jre\lib\security 目录下的 , 这个可能和 Eclipse 的环境有关 )

8.     再一次执行程序,哈哈哈哈哈哈,搞定,终于得到了支付宝返回给我的可爱的 XML 数据流

 

由于以前对 Java 安全方面没有怎么接触过,还需对这方面继续补补课,嘿嘿: - )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值