jdk导入安全证书
SSLHandshakeException
Exception in thread "main" 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 Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) at sun.security.validator.Validator.validate(Validator.java:260) at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428) Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196) at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268) at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
解决方案
获取证书
- 点击“证书(有效)”,即显示证书的相关信息。
- 点击“详细信息”,点击“导出”。
- 选择证书保存路径与文件名称,选择“Base64 编码ASCII,单一证书”的格式导出证书,然后点击“保存”,即可完成证书下载流程。
证书导入JDK的步骤
解释说明:
- spdbuat是自己可以修改的名称,spdbuat.cer是导出的证书,同样,这里的证书名字也是可以任意取的,但前提是保证将JDK下的指定目录(以自己实际情况为准)C:\Program Files\Java\jdk.1.8.0_212\jre\lib\security目录的cacerts文件之前没有导入同名证书,就是要保证你将要导入证书名称的唯一性。
- changeit是密码,Java默认的。
- keytool是jdk中bin目录的一个可执行文件,jdk默认自带的,示例机器中的路径是C:\Program Files\Java\jdk.1.8.0_212\jre\bin\keytool.exe。
- %JAVA_HOME%/jre/lib/securty/cacerts路径中,%JAVA_HOME%/jre/lib/security/是目录,cacerts是文件(即要把证书导入到其中),提前请确保您已经正确配置过JAVA_HOME环境变量。
- 如果提示:“是否信任此证书?[否]”,请输入y并回车。当出现:“证书已添加到秘钥库中[正在存储cacerts]”的时候,表示您已经导入成功。
注意:
- 如果提示找不到指定文件,那么有可能是路径错了,这里是先执行cd C:\Program Files\Java\jdk.1.8.0_212\jre\bin\ (路径以实际为准),来到keytool.exe所在的目录执行以上命令。后续更新时,先删除原来的证书,然后导入新的证书。
Windows命令行执行
keytool -import -v -trustcacerts -alias spdbuat -file domain.cer -storepass changeit -keystore %JAVA_HOME%/jre/lib/security/cacertsLinux 执行
Linux 执行
keytool -import -v -trustcacerts -alias spdbuat -file domain.cer -storepass changeit -keystore /usr/local/openjdk-8/jre/lib/security/cacerts
keytool 常用命令
//查看cacerts中的证书列表 keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit //删除cacerts中指定名称的证书 keytool -delete -alias domain -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
//导入指定证书到cacerts keytool -import -alias spdbuat -file domain.cer -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -trustcacerts
解决方案
获取证书
1点击“证书(有效)”,即显示证书的相关信息。
2点击“详细信息”,点击“导出”。
3选择证书保存路径与文件名称,选择“Base64 编码ASCII,单一证书”的格式导出证书,然后点击“保存”,即可完成证书下载流程。
证书导入JDK的步骤
解释说明:
1spdbuat是自己可以修改的名称,spdbuat.cer是导出的证书,同样,这里的证书名字也是可以任意取的,但前提是保证将JDK下的指定目录(以自己实际情况为准)C:\Program Files\Java\jdk.1.8.0_212\jre\lib\security目录的cacerts文件之前没有导入同名证书,就是要保证你将要导入证书名称的唯一性。
2changeit是密码,Java默认的。
3keytool是jdk中bin目录的一个可执行文件,jdk默认自带的,示例机器中的路径是C:\Program Files\Java\jdk.1.8.0_212\jre\bin\keytool.exe。
4%JAVA_HOME%/jre/lib/securty/cacerts路径中,%JAVA_HOME%/jre/lib/security/是目录,cacerts是文件(即要把证书导入到其中),提前请确保您已经正确配置过JAVA_HOME环境变量。
5如果提示:“是否信任此证书?[否]”,请输入y并回车。当出现:“证书已添加到秘钥库中[正在存储cacerts]”的时候,表示您已经导入成功。
注意:
1如果提示找不到指定文件,那么有可能是路径错了,这里是先执行cd C:\Program Files\Java\jdk.1.8.0_212\jre\bin\ (路径以实际为准),来到keytool.exe所在的目录执行以上命令。后续更新时,先删除原来的证书,然后导入新的证书。
Windows命令行执行
Shell 复制代码 1 keytool -import -v -trustcacerts -alias spdbuat -file spdbuat.cer -storepass changeit -keystore %JAVA_HOME%/jre/lib/security/cacerts Linux 执行
Shell 复制代码 1 keytool -import -v -trustcacerts -alias spdbuat -file spdbuat.cer -storepass changeit -keystore /usr/local/openjdk-8/jre/lib/security/cacerts keytool 常用命令
Shell 复制代码 1 2 3 4 5 6 7 8 //查看cacerts中的证书列表 keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit //删除cacerts中指定名称的证书 keytool -delete -alias spdbuat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit //导入指定证书到cacerts keytool -import -alias spdbuat -file spdbuat.cer -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -trustcacerts 错误提示:非法选项: Files\Java\jdk1.8.0_201\jre\lib\security\cacerts,可以尝试在keystore参数路径中加上双引号。
Shell 复制代码 1 keytool -import -v -trustcacerts -alias spdbuat -file spdbuat.cer -storepass changeit -keystore "%JAVA_HOME%/jre/lib/security/cacerts" 标签:jre,keytool,lib,jdk,证书,cacerts,导入,security From: https://www.cnblogs.com/weiweirui/p/17784778.html