java webservice https_WebService的HTTPS访问——解决PKIX错误 | 字痕随行

最近都在与Java打交道,将原来的项目用Java重构了一遍,所以之前的问题又再次浮出水面,在Axis2的WebService客户端生成完毕后,访问目标服务时报错,错误为“unable to find valid certification path to requested target”,说白了就是证书问题。

首先,需要从目标站点导出证书,以火狐为例,按以下步骤操作:

cert1.jpgcert2.jpgcert3.jpg

其次,导入公钥:

keytool -import -file d:\Server.cer -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -alias server

将上面命令中的"d:\Server.cer"替换为第一步导出的证书的完整路径,比如"d:\bladelogicrds.crt"。在这里需要注意的是:

1.有的资料中说导入到jre下,说的比较模糊,其实决定导入到哪里,是由你最终使用的WEB服务器所加载的JDK决定的,比如我的Tomcat就是使用JAVA_HOME所指向的JDK,所以我需要导入至此。最好细心检查一下,避免配置了半天却还是报错。

2.也许在实验配置时,搞错了秘钥库密码,或者在“%JAVA_HOME%\jre\lib\security”下已经存在了“cacerts”这个文件,你可以直接删了旧的,再使用命令导入,这时会生成一个新的。

使用如下命令可以查看是否导入成功:

keytool -list -keystore "%JAVA_HOME%\jre\lib\security\cacerts" | findstr /i server

"server"就是个别名,与导入命令中的"-alias server"中的相对应。如下图所示:

cert4.jpg

至此,配置完毕,可以再次运行程序进行验证了。解决这个错误还有一种方法,使用编码的方式将证书添加到请求对象中,这种方法因为时间关系,没有试验。

注:keytool为java自带的工具,可以在bin文件夹中找到。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值