返回顶部

jdk导入安全证书

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)

 

解决方案

获取证书

  1. 点击“证书(有效)”,即显示证书的相关信息。
  2. 点击“详细信息”,点击“导出”。
  3. 选择证书保存路径与文件名称,选择“Base64 编码ASCII,单一证书”的格式导出证书,然后点击“保存”,即可完成证书下载流程。

证书导入JDK的步骤

解释说明:

  1. spdbuat是自己可以修改的名称,spdbuat.cer是导出的证书,同样,这里的证书名字也是可以任意取的,但前提是保证将JDK下的指定目录(以自己实际情况为准)C:\Program Files\Java\jdk.1.8.0_212\jre\lib\security目录的cacerts文件之前没有导入同名证书,就是要保证你将要导入证书名称的唯一性。
  2. changeit是密码,Java默认的。
  3. keytool是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命令行执行
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"
posted @ 2023-10-24 14:43  九尾cat  阅读(546)  评论(0编辑  收藏  举报