java webservice https_WebService的HTTPS访问——解决PKIX错误 | 字痕随行
最近都在與Java打交道,將原來的項(xiàng)目用Java重構(gòu)了一遍,所以之前的問題又再次浮出水面,在Axis2的WebService客戶端生成完畢后,訪問目標(biāo)服務(wù)時(shí)報(bào)錯(cuò),錯(cuò)誤為“unable to find valid certification path to requested target”,說白了就是證書問題。
首先,需要從目標(biāo)站點(diǎn)導(dǎo)出證書,以火狐為例,按以下步驟操作:
其次,導(dǎo)入公鑰:
keytool?-import?-file?d:\Server.cer?-keystore?"%JAVA_HOME%\jre\lib\security\cacerts"?-alias?server
將上面命令中的"d:\Server.cer"替換為第一步導(dǎo)出的證書的完整路徑,比如"d:\bladelogicrds.crt"。在這里需要注意的是:
1.有的資料中說導(dǎo)入到j(luò)re下,說的比較模糊,其實(shí)決定導(dǎo)入到哪里,是由你最終使用的WEB服務(wù)器所加載的JDK決定的,比如我的Tomcat就是使用JAVA_HOME所指向的JDK,所以我需要導(dǎo)入至此。最好細(xì)心檢查一下,避免配置了半天卻還是報(bào)錯(cuò)。
2.也許在實(shí)驗(yàn)配置時(shí),搞錯(cuò)了秘鑰庫(kù)密碼,或者在“%JAVA_HOME%\jre\lib\security”下已經(jīng)存在了“cacerts”這個(gè)文件,你可以直接刪了舊的,再使用命令導(dǎo)入,這時(shí)會(huì)生成一個(gè)新的。
使用如下命令可以查看是否導(dǎo)入成功:
keytool?-list?-keystore?"%JAVA_HOME%\jre\lib\security\cacerts"?|?findstr?/i?server
"server"就是個(gè)別名,與導(dǎo)入命令中的"-alias server"中的相對(duì)應(yīng)。如下圖所示:
至此,配置完畢,可以再次運(yùn)行程序進(jìn)行驗(yàn)證了。解決這個(gè)錯(cuò)誤還有一種方法,使用編碼的方式將證書添加到請(qǐng)求對(duì)象中,這種方法因?yàn)闀r(shí)間關(guān)系,沒有試驗(yàn)。
注:keytool為java自帶的工具,可以在bin文件夾中找到。
總結(jié)
以上是生活随笔為你收集整理的java webservice https_WebService的HTTPS访问——解决PKIX错误 | 字痕随行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java多线程w3c_多线程
- 下一篇: dotnet vs code mysql