You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot双向认证握手失败问题排查求助

PKIX验证错误排查:Spring Boot RestTemplate调用HTTPS服务失败

我最近在Spring Boot应用里用RestTemplate调用HTTPS服务时,一直遇到PKIX路径验证错误,折腾了好一阵子才解决,把过程分享出来给大家参考。

场景复现

我写的RestTemplate客户端代码如下:

@SpringBootApplication 
public class SecureAppClientApplication { 
    private static final Logger LOG = LoggerFactory.getLogger(SecureAppClientApplication.class); 
    public static void main(String[] args) { 
        SpringApplication.run(SecureAppClientApplication.class, args); 
        LOG.debug("Testing connecting to secure site"); 
        HttpsURLConnection.setDefaultHostnameVerifier ((hostname, session) -> false); 
        RestTemplate restTemp = new RestTemplate(); 
        String greetings = restTemp.getForObject("https://my.secure.service", String.class); 
        LOG.debug("Received greetings from secured server ---> " + greetings ); 
    } 
}

对应的application.properties配置:

server.ssl.key-store=myKeyStore.jks
server.ssl.key-store-password=Store@123
server.ssl.key-alias=myClient
server.ssl.key-password=Key@1234
server.ssl.trust-store=cacerts
server.ssl.trust-store-password=changeit

为了让客户端信任服务器证书,我把从Mozilla浏览器导出的主机证书安装到了这些位置:

  • 类路径下的myKeyStore.jks
  • 类路径下的cacerts副本
  • JDK目录下的cacerts
  • JRE目录下的cacerts

但不管怎么弄,还是抛出了这个错误:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

初期怀疑方向

一开始我怀疑是这几个原因:

  • 从浏览器提取的证书有问题(之前用openssl生成的X509证书测试是正常的)
  • 服务器访问路径与证书域名不匹配:我访问的是https://host/service,但证书只对应https://host
  • 用keytool -importcert -file certificate.cer -keystore keystore.jks -alias my-alias导入证书的方式有误

问题定位与解决

后来排查发现问题出在证书链上:从浏览器导出的证书只是终端服务器证书,缺少中间证书和根证书,导致Java无法构建完整的信任链。联系服务器管理员获取了完整的3个证书(根证书、中间证书、终端证书)并安装后,问题就解决了。

总结

实际场景中调用HTTPS Web服务时,不能直接使用浏览器导出的证书——浏览器本身会自动处理证书链,但Java的信任库需要完整的证书链才能验证通过。一定要获取包含所有层级的证书集合,确保Java能找到从终端证书到信任根的完整路径。

内容的提问来源于stack exchange,提问作者soufrk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:01:53