JDK17从浏览器导入证书,解决报错:PKIX path building failed

发布于:2025-05-31 ⋅ 阅读:(20) ⋅ 点赞:(0)

手打不易,如果转摘,请注明出处!

注明原文:https://zhangxiaofan.blog.csdn.net/article/details/148254122


目录

背景

检查项1—JDK17和JDK8的证书路径不同

检查项2—检查IDEA设置的JDK

检查项3—导出证书链不完整(关键)

导入证书

查看证书

删除证书


背景

报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

由于项目是内嵌的Apache HttpClient或OkHttp,项目不方便直接修改,所以需要手动管理证书(从浏览器导出、导入到JDK)。

如果你的项目是自己用Apache HttpClient或OkHttp,可以参考这篇文章来绕过证书检验:

Java Apache Http绕过Https证书校验:PKIX failed: SunCertPathBuilderException:unable to find valid certificat_pkix path building failed 绕过-CSDN博客文章浏览阅读465次,点赞9次,收藏3次。Java Apache Http绕过Https证书校验:PKIX failed: SunCertPathBuilderException:unable to find valid certificat_pkix path building failed 绕过 https://zhangxiaofan.blog.csdn.net/article/details/140637934

检查项1—JDK17和JDK8的证书路径不同

JDK8:  %JAVA_HOME%\jre\lib\security\cacerts
JDK17:%JAVA_HOME%\lib\security\cacerts

检查项2—检查IDEA设置的JDK

  • 打开 IntelliJ IDEA → File → Project Structure → SDKs,检查 JDK home path 是否指向你添加证书的 JDK(如 C:\Program Files\Java\jdk-17)。
  • 如果配置了多个 JDK,确保项目实际运行的 JDK 是你修改过的版本。

检查项3—导出证书链不完整(关键)

使用浏览器访问目标接口的URL,导出完整的服务器证书(包括所有中间证书和根证书)

继续点击

注意导出证书的时候,需要导出完整的证书链,以及多个证书目录

为了避免出问题,我们要确保导入了所有 根证书(Root CA)或中间证书(Intermediate CA),就是说,只要出现在下面目录的,全部都导出一遍。

例如:证书有问题,尝试把下面3个目录全部导出一遍。这里我只导出了根目录(证书链)。

导出后就可以去安装证书了,以JDK17为例:

导入证书

先进入到JDK证书路径

cd /d %JAVA_HOME%\lib\security 

拷贝证书到当前路径,然后导入

keytool -keystore <truststore证书> -import -alias <导入证书别名> -file <导入的证书> -storepass changeit

例如:
keytool -keystore cacerts -import -alias Baidu -file baidu.crt -storepass changeit

查看证书

keytool -list -V  -keystore <truststore证书> -storepass changeit -alias <证书别名>

例如:
keytool -list -V  -keystore cacerts -storepass changeit -alias Baidu

删除证书

keytool -delete -keystore cacerts -alias <证书别名> 

例如:
keytool -delete -keystore cacerts -alias Baidu 

至此,手动管理的证书就成功导入JDK,运行项目再试试!!


网站公告

今日签到

点亮在社区的每一天
去签到