首页/网络/协议速查/证书链与信任验证

证书链与信任验证

服务器必须下发「叶证书 + 中间证书」,客户端用本地根证书验证到受信根;少发中间证书是「部分设备能开、部分报错」的经典原因。

协议速查网络更新于 2026-10-13

证书链与信任验证

客户端验证服务器身份时不只看一张证书,而是验证一条链:服务端下发叶证书与中间证书,客户端用自己的根证书库逐级向上验证,直到找到受信任的根。根证书内置在系统与浏览器里,不需要服务端下发。少发中间证书是「部分设备能打开、部分设备报错」这类问题的经典原因,因为不同客户端的容错能力并不一致。

基本信息

叶证书域名证书本身,与服务端私钥配对
中间证书由 CA 的中间机构签发,必须随链一起下发
根证书内置在系统或浏览器信任库中,不随服务下发
下发顺序叶证书在前,中间证书在后;顺序颠倒部分客户端会验证失败
配置文件nginx 的 ssl_certificate 应指向包含叶证书与中间证书的合并文件
常用验证openssl s_client -showcerts 导出链,再用 verify 做链校验

验证链完整性

验证链完整性
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | grep -E 's:|i:' | head -20
# s: 主体信息  i: 签发者信息,用它确认链是否完整
openssl s_client -connect example.com:443 -servername example.com -CAfile /etc/ssl/certs/ca-certificates.crt </dev/null 2>&1 | grep -i 'verify'
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt -untrusted chain.pem leaf.pem   # 本地逐级校验
curl -sv https://example.com 2>&1 | grep -i 'certificate' | head

常见链问题

问题现象处置
缺中间证书桌面浏览器正常,部分手机与命令行工具报错把叶证书与中间证书合并后重新部署
顺序颠倒少数客户端验证失败,抓包看下发顺序即可确认按叶证书在前、中间证书在后重新排列
链里夹带根证书部分客户端认为链异常或体积变大去掉根证书,只下发叶证书与中间证书
证书续期后未同步新证书已生效但链仍是旧的一次性替换完整链文件并重载服务
双栈走不同配置IPv4 正常而 IPv6 报证书错误逐个入口确认是否使用同一份证书文件

典型使用场景

  • 上线新证书后部分用户报错,判断是否是中间证书缺失
  • 排查「命令行正常、手机报错」这类客户端差异问题
  • 证书续期时核对部署是否一次替换了整条链
  • 排查 CDN 与源站证书不一致导致的验证失败
  • 审计信任链长度与是否混入了不该出现的证书
把叶证书与中间证书合并成一个文件后配置给服务端,是避免缺中间证书的标准做法;只配置叶证书在现代客户端上大概率会失败,尤其是移动端。

易错点

  • 只部署叶证书,桌面浏览器因为自身容错仍然正常,手机与调用方却全部报未知签发机构,容易误判为客户端问题
  • 链顺序弄反或把根证书也一起下发,部分客户端直接拒绝,且现象随设备不同而变化
  • 续期时只替换了叶证书文件,链仍指向旧中间证书,出现「新证书提示即将过期」的矛盾现象
  • 负载均衡与源站分别配置证书,只更新了一侧,线上表现随机取决于请求落到哪一层

数据来源与参考

  • RFC 5280(X.509 证书与 CRL 概要)
  • CA/Browser Forum 基线要求

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌