您的位置:首页 > 理论基础 > 计算机网络

Https网站中的安全证书导入到java中的cacerts证书库

2014-03-19 18:24 821 查看
提示:

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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: