如何把Https網站中的安全證書導入到java中的cacerts證書庫

提示:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

一個很簡單的富客戶端到WEB服務器的連接,基本都能夠正常建立連接,唯獨公司NEXT、TIMS總是報javax.net.ssl.SSLHandshakeException和sun.security.provider.certpath.SunCertPathBuilderException的異常,網上轉了轉,找到幾篇前輩的文章,摘下點重點以便以後繼續剽與竊。

在項目開發中,有時會遇到與SSL安全證書導入打交道,如何把證書導入java的cacerts證書庫?簡單的用NEXT做個演示:

第一步:IE打開https://next.xxxcorp.cn,把要導入java證書庫的證書下載
在該網頁安全警報彈出窗口上查看證書--詳細信息--複製到文件
會彈出一個證書導出嚮導對話框,按提示一直下一步直到完成。
我把證書保存在C盤,名字爲NEXT_CertKey.cer。

第二步:將上面導出的證書導入java中的cacerts證書庫
cmd進入C:\Program Files\Java\jdk1.5.0_06\jre\lib\security目錄
敲入如下命令回車執行
keytool -import -alias cacerts
-keystore C:\Program Files\Java\jdk1.5.0_06\jre\lib\security\cacerts
-file C:\NEXT_CertKey.cer
-trustcacerts
此時命令行會提示你輸入cacerts證書庫密碼,
java中cacerts證書庫默認密碼爲changeit,
Y確認即可,OK,認證已添加至keystore。

附:URLConnection、URL
try {
URL url;
url = new URL("https://next.xxxcorp.cn");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);

BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String input = null;
while ((input = reader.readLine()) != null) {
System.out.println(input);
}
reader.close();
urlConnection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章