如何把安全证书导入到java中的cacerts证书库

一、问题描述

当java访问网址报错

javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target时候

问题是自己的java环境中没有网站的证书。

通过将网站的安全证书导入到自己的javacacerts环境中可以解决该问题。

二、具体步骤

每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载,
    在该网页上右键 >> 属性 >> 点击"证书" >>
    再点击上面的"详细信息"切换栏 >>
    再点击右下角那个"复制到文件"的按钮
    就会弹出一个证书导出的向导对话框,按提示一步一步完成就行了。
    例如:保存为wcceca.cer, 放在d盘下

第二步:如何把上面那步的(wcceca.cer)这个证书导入java中的cacerts证书库里?

         如:我的 jdk安装这个目录在

        C:Program FilesJavajdk1.8.0_131

开始 >> 运行 >> 输入cmd 进入dos命令行 >>
再用cd进入到C:Program FilesJavajdk1.8.0_131jrelibsecurity这个目录下
敲入如下命令回车执行

keytool -import -alias cacerts -keystore cacerts -file D:wcceca.cer

你敲入changeit就行了,这java中cacerts证书库的默认密码,

导入后用-list查看

keytool -list -keystore cacerts

以后更新时,先删除原来的证书,然后导入新的证书
keytool -delete -alias akazam_email -keystore cacerts
keytool -import -alias akazam_email -file akazam_email.cer -keystore cacerts

 

注意JAVA_HOME设置中如果有空格,会java执行错误,可以把环境变量JAVA_HOME中C:Program Files缩写为C:Progra~1

原文地址:https://www.cnblogs.com/StarZhai/p/13665290.html