Java信任证书机构问题:Spring Boot调用HTTPS接口报PKIX路径错误
结论
该错误不属于代码问题,错误栈里的SunCertPathBuilderException: unable to find valid certification path to requested target是JVM运行时无法信任目标WebService使用的证书导致的,和业务代码逻辑无关。你之前导入证书后未生效,大概率是证书导入操作的配置存在问题,常见的失效原因如下:
常见导入失效原因
- 导入的JDK和Spring Boot实际运行使用的JDK不匹配
本地环境存在多个JDK版本时,很容易出现把证书导入到非项目运行用的JDK信任库的情况。可以在Spring Boot启动参数中添加-Djavax.net.debug=ssl,查看运行时加载的信任库实际路径,确认和你导入证书的cacerts文件路径一致。 - 证书导入操作未生效
导入证书时要确认使用了正确的cacerts默认密码changeit,导入完成后可以执行以下命令验证证书是否确实导入成功:keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -alias 你设置的证书别名 - 仅导入了站点叶子证书未导入根CA证书
若目标服务使用的是证书链,仅从浏览器导出站点的单张叶子证书无法完成信任校验,需要导出证书链最顶层的根CA证书再导入到信任库中。
开发环境临时绕过方案
如果是本地开发场景不需要严格校验证书,可以在HTTP客户端(RestTemplate/WebClient/OkHttp等)的初始化配置中设置跳过SSL证书校验,该配置禁止在生产环境使用。
内容的提问来源于stack exchange,提问作者darwin
相关产品推荐
相关产品推荐

