A-A+

WebService的HTTPS访问——解决PKIX错误

2015年02月22日 技术 暂无评论 阅读 2,343 次

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

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

cert1 cert2 cert3

其次,导入公钥:

  1. 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

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

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

标签:

给我留言

Copyright © 字痕随行 保留所有权利.   Theme  Ality 京ICP备14039894号

用户登录

分享到: