根证书过期与信任库
根证书过期会造成大范围校验失败:所有依赖该根的证书都会受影响。排查时先确认客户端信任库里的根证书版本,再检查服务端链是否仍引用已被替换的根。关键点是系统信任库与语言运行时相互独立,操作系统更新过并不代表应用也更新过,需要分别核对。
基本信息
| 常见诱因 | 镜像未更新 ca-certificates、IoT 设备信任库固化为不可更新 |
|---|---|
| 更新方式 | 系统包升级 ca-certificates;Java 用 keytool 导入;容器镜像重建 |
| 排查点 | issuer 与链上根是否在当前信任库覆盖范围内 |
| 影响面 | 换根事件会波及长期未更新的终端 |
| 验证思路 | 用同一张证书在不同客户端环境分别验证 |
典型使用场景
- 大范围「证书校验失败」事件的根因排查
- 镜像与设备固件中的信任库版本核查
- 换根过渡期的双链并存策略
- 排查只有部分客户端失败:这些客户端信任库未更新
- 把信任库版本纳入资产清单
查看信任库与链
查看信任库与链
openssl version -d # 默认信任目录
ls /etc/ssl/certs | head # 系统信任库内容
keytool -list -cacerts -storepass changeit | wc -l # Java 信任库条目数
# 追踪链上根的签发者与有效期
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | openssl x509 -noout -issuer -enddate信任库位置
| 环境 | 信任库 | 更新方式 |
|---|---|---|
| Linux 系统 | /etc/ssl/certs 与 ca-certificates 包 | 包管理器升级 |
| Java 运行时 | 自带 cacerts | keytool 导入或整体替换 |
| 容器镜像 | 镜像内 CA 包 | 重建镜像或运行时挂载 |
| 固件设备 | 设备内固化 | 依赖固件升级,常无法在线更新 |
大型 CA 换根会影响长期未更新的终端。发布前梳理客户端环境清单(系统版本、运行时、固件能力),可以在换根窗口前提前发现问题,而不是等故障发生后再逐个排查。
变更提示:换根期间建议同时部署新链与旧链材料一段时间,让尚未更新信任库的客户端平滑过渡;把信任库更新与证书更换放在同一变更窗口规划,可以避免「服务端换了、客户端还没换」的中间状态拖得过久。