JDK导入Let's Encrypt根证书

项目在调用https接口时报错:
image

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
原因可能是更新换新证书后,HTTPS 域名的公钥证书不在 JDK/JRE 的证书库中,被Java认为是不可信的。

要在Java JDK中导入Let's Encrypt的根证书,您可以按照以下步骤进行操作:

下载Let's Encrypt的根证书(ISRG Root X1):
可以从Let's Encrypt官方网站下载最新的根证书。您可以在 https://letsencrypt.org/certificates/ 找到相应的证书。
将下载的根证书保存到您的计算机上。
使用Java的keytool工具将证书导入到JDK的信任存储中。在终端或命令提示符中运行以下命令:

keytool -import -trustcacerts -alias letsencryptisrgrootx1 -file /path/to/letsencrypt-root-x1.crt -keystore $JAVA_HOME/jre/lib/security/cacerts

确保将/path/to/letsencrypt-root-x1.crt替换为您下载的Let's Encrypt根证书的实际路径。$JAVA_HOME是指向您的JDK安装目录的环境变量。
需要输入Java信任存储的密码,默认密码是changeit。
要求确认是否信任该证书。输入yes以确认。

导入成功后,重启项目,就可以正常访问了;

# keytool其它命令:
# 删除websitename证书:
keytool -delete -alias websitename -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
#查看cacerts中的所有证书:
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

导入网站证书也是可以的
image
还有一种办法就是,在请求代码中忽略证书验证;

posted @   时光煮酒丶  阅读(157)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示