JDK导入Let's Encrypt根证书
项目在调用https接口时报错:
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
导入网站证书也是可以的
还有一种办法就是,在请求代码中忽略证书验证;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)