用序列号定位节点差异
序列号是证书在签发 CA 内被分配的唯一标识,比较各节点实际提供的证书序列号,可以快速判断是否还有节点在发旧证书,是替换复核时最省事的抓手。要注意序列号只保证在同一个 CA 内唯一,跨 CA 比较没有意义;实际核对时把序列号与 notAfter、指纹三者一起看更稳妥,也方便把结论写进发布记录。
基本信息
| 查看命令 | openssl x509 -noout -serial -dates |
|---|---|
| 语义边界 | 序列号在签发 CA 内唯一,跨 CA 不可比 |
| 配套信息 | 指纹(-fingerprint -sha256)与 notAfter 一起比对 |
| 典型用途 | 复核对换后是否所有节点都换了新证书 |
| 记录留存 | 把序列号与指纹写入发布记录,回滚与审计可精确定位 |
| 常见误用 | 把序列号当全局唯一资产编号使用 |
典型使用场景
- 轮换复核:证书替换完成后,逐个节点确认序列号已变为新证书。
- 回滚定位:出问题时按序列号确认哪些节点已经回退、哪些还没。
- 变更审计:用序列号与指纹还原某次发布的实际生效范围。
- 多节点巡检:批量探测各节点,快速筛出仍在使用旧证书的机器。
- 交接与归档:把序列号写入证书档案,后续凭证核对有据可查。
多节点序列号比对
多节点序列号比对
for h in node1.example.com node2.example.com; do
echo -n "$h: "
echo | openssl s_client -connect $h:443 -servername example.com 2>/dev/null | openssl x509 -noout -serial -dates
done
# 需要更严格时把指纹一起打出来
# echo | openssl s_client -connect node1.example.com:443 2>/dev/null | openssl x509 -noout -fingerprint -sha256
# 输出按序列号排序,一眼可以看出哪几个节点还停在旧证书输出字段读法
| 字段 | 含义 | 核对要点 |
|---|---|---|
| serial | 签发时由 CA 分配 | 同 CA 内应唯一,各节点应完全一致 |
| notBefore | 生效时间 | 新证书应晚于旧证书 |
| notAfter | 到期时间 | 确认轮换后有余量 |
| 指纹 | 整张证书的摘要 | 比序列号更强的比对依据 |
| issuer | 签发者 | 序列号相同但 issuer 不同说明来自不同 CA |
把序列号与指纹写入发布记录,事后回滚与审计时可以精确定位到具体某次签发,不必靠时间线猜测。