SSL/TLS证书链的工作原理
当浏览器显示锁形图标时,它刚刚验证了一条信任链——从网站的证书一直到操作系统已经信任的根证书。理解这条链,是修复大多数TLS错误的关键。
三个环节
| 环节 | 颁发给 | 颁发者 | 存放位置 |
|---|---|---|---|
| 叶证书(终端实体) | 你的域名 | 中间CA | 由服务器发送 |
| 中间证书 | CA | 根CA | 应由服务器发送 |
| 根证书 | 根CA | 自身(自签名) | OS/浏览器信任库 |
客户端天生信任根证书。根证书签发中间证书,中间证书签发你的叶证书。客户端沿着每张证书的 issuer(颁发者)向上追溯,直到到达受信任的根,从而在根密钥从不暴露于网络的情况下建立信任。
为什么会出现"证书链不完整"
服务器必须同时提供叶证书和所有中间证书。根证书不发送(客户端已拥有)。经典故障是服务器只配置了叶证书:桌面Chrome可能仍能工作(通过AIA缓存/获取中间证书),但移动客户端和 curl 会因 unable to get local issuer certificate 而失败。请务必部署CA提供的 fullchain 文件。
自行检查
# 显示服务器发送的所有证书,含 subject/issuer
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
本站的 SSL/TLS检测 会在浏览器中呈现同样的证书链,并在缺少中间证书或主机名不匹配时发出警告。到期监控见 检查证书有效期,协议版本见 TLS版本。
备注: PEM文件中顺序很重要:叶证书在前,随后按由近及远的顺序排列中间证书。顺序错误会导致与缺失中间证书相同的客户端错误。