中间证书过期排查
叶证书尚未到期但访问报错时,中间证书过期是常见原因。用抓链选项拉取完整链,按标记拆分成单张证书,逐张查看生效时间与失效时间即可确认断点。中间证书的有效期往往比叶证书短,因此巡检必须把链上每张证书都纳入到期监控,而不是只盯着站点证书。
基本信息
| 抓链 | 用抓链选项保存完整链输出 |
|---|---|
| 拆分 | 按起止标记拆成单张证书文件 |
| 核对 | 逐张查看主体、签发者与有效期 |
| 结论 | 任一中间证书过期都会导致链校验失败 |
典型使用场景
- 排错:叶证书未到期但客户端报链错误
- 巡检:把链上所有证书纳入到期监控
- 更新中间证书后验证替换是否完整
- 多环境对比:确认各环境链内容一致
- 应急:定位具体是哪一张证书过期
拆分并逐张检查
拆分并逐张检查
echo | openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null > chain.pem
awk 'BEGIN{n=0} /BEGIN CERTIFICATE/{n++} {print > ("c" n ".pem")}' chain.pem
for f in c*.pem; do echo "== $f"; openssl x509 -in $f -noout -subject -dates; done排查要点
| 项目 | 正常 | 异常 |
|---|---|---|
| 主体与签发者 | 首张为站点证书 | 首张不是站点证书说明顺序错误 |
| 有效期 | 全部在有效期内 | 任一过期即校验失败 |
| 链长度 | 与预期层级一致 | 缺层说明链文件不全 |
中间证书有效期往往比叶证书短;只监控叶证书到期时间会漏掉更早到期的中间证书,造成看似突然的全网故障。
落地建议
- 监控覆盖链上每一张证书
- 更换中间证书时同步更新所有下游环境
- 把链检查编入部署后验证步骤
- 记录链文件的来源与生成方式
不同客户端对链缺失的容忍度不同,有的会尝试自行补全,因此同一份链在不同环境下的表现可能不一致,排错时要分别验证。
巡检清单
- 抓取每个对外站点的完整链
- 逐张记录主体与失效时间
- 把最晚到期的证书时间与提前量对比
- 发现临期证书时提前安排替换与灰度
抓链时要指定目标名称,否则可能拿到默认站点的证书链;这一步漏掉会让整份检查结果指向错误的站点。