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

Java11的cacerts无对应中间证书时为何仍可完成证书验证?

问题解答

核心原因:TLS握手时服务端会主动返回完整证书链

HTTPS的TLS握手流程中,服务端默认会下发完整的证书信任链,包含你提到的API叶子证书、中间CA证书,部分场景下还会附带根证书。Java并不会要求中间CA证书必须提前预置在cacerts信任库中,只要完整链的最终根证书在信任库内,即可完成全链路验签。

Java证书验证的具体逻辑

  • 验证流程从叶子证书开始,逐层向上校验每一层证书的数字签名是否合法、证书是否在有效期内
  • 只要能追溯到任意一个已经在cacerts中被标记为信任的根证书,整个证书链就会被判定为合法
  • 中间证书仅需要由链上的上一级CA签发、签名有效即可,不需要提前预置在本地信任库

对应场景的匹配说明

你使用的OpenJDK 11.0.10版本的默认cacerts中已经预置了DigiCert Global Root CA根证书,服务端返回的证书链已经包含了你本地缺失的中间CA证书,Java可以直接使用服务端返回的中间证书完成逐层验签,最终追溯到受信任的根证书,因此SSL握手可以正常完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:57:03