Fork me on Gitee

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中没有该网站的对应证书

处理

下载证书

image

image

导入证书

查看证书库

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

成功的效果
image

注意事项

${java_home}的实际地址,一般都会存在空格,例如

C:\Program Files\Java\jdk1.8.0_291\bin

这种情况地址无法识别。需要使用如下方法

  1. 缩写法
    可以利用DOS 8.3命名规则把 C:\Program Files缩写为C:\Progra~1

  2. 镜像法
    创建一个镜像
    如在cmd中输入subst w: "D:\Program Files\"此后,就可以直接用w:\替代D:\Program Files

  3. 双引号法
    “”把带空格的目录路径括起来。如:
    "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

posted @ 2022-07-26 10:27  江南西道  阅读(1472)  评论(0编辑  收藏  举报
Fork me on GitHub