JDK导入SSL证书
问题
java代码访问HTTPS地址,提示错误如下:
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
原因
JDK中没有该网站的对应证书
处理
下载证书
导入证书
查看证书库
keytool -list -keystore /${java_home}/jre/lib/security/cacerts
将导出的证书导入到JDK的证书库中
#以管理员身份运行CMD
cd C:\Program Files\Java\jdk1.8.0_291\bin
#执行keytool命令,密码默认是 changeit
keytool -import -alias openpayment -keystore ${java_home}/jre/lib/security/cacerts -file 证书路径/openpayment.cer
成功的效果
注意事项
${java_home}的实际地址,一般都会存在空格,例如
C:\Program Files\Java\jdk1.8.0_291\bin
这种情况地址无法识别。需要使用如下方法
-
缩写法
可以利用DOS 8.3命名规则把C:\Program Files
缩写为C:\Progra~1
-
镜像法
创建一个镜像
如在cmd中输入subst w: "D:\Program Files\"
此后,就可以直接用w:\
替代D:\Program Files
-
双引号法
用“”
把带空格的目录路径括起来。如:
"C:\Program Files\"
当前使用的为缩写法:keytool -import -alias openpayment -keystore C:/Progra~1/Java/jdk1.8.0_291/jre/lib/security/cacerts -file C:\Users\computer\Desktop\payment.cer
本文来自博客园,作者:江南西道,转载请注明原文链接:https://www.cnblogs.com/jiangnanxidao/p/16520000.html