证书检查看三件事
TLS 证书检查回答三个问题:信任链能不能建立、什么时候到期、覆盖了哪些域名。链不完整时部分客户端(多为移动端与老旧 Java 运行时)会直接握手失败,而浏览器因缓存中间证书往往看不出问题;过期则是典型的可用性事故,属于必须在评估阶段先排掉的项。
基本信息
| 适用平台 | 所有 HTTPS/TLS 服务:Web、API、邮件、控制台 |
|---|---|
| 常用工具 | openssl s_client、sslscan、浏览器证书面板 |
| 关键参数 | -servername 指定 SNI,否则拿到默认站点证书 |
| 记录项 | 主体、SAN、签发者、有效期、链顺序 |
典型使用场景
- 上线前验证证书链完整,避免部分客户端无法访问
- 整理证书到期台账,防止过期事故
- 检查多域名与泛域名覆盖是否与业务域名一致
- 排查“浏览器正常、App 报错”这类信任链差异问题
- 核查内部自建 CA 场景下的信任链与吊销配置
检查示例
检查示例
echo | openssl s_client -connect app.example.com:443 -servername app.example.com -showcerts 2>/dev/null | openssl x509 -noout -dates -subject -issuer # 看有效期与主体
echo | openssl s_client -connect app.example.com:443 -servername app.example.com -showcerts 2>/dev/null | openssl x509 -noout -ext subjectAltName # 看域名覆盖
echo | openssl s_client -connect app.example.com:443 -servername app.example.com -CAfile chain.pem 2>&1 | grep -i 'verify' # 验证链是否可构建输出逐项读法
| 输出项 | 含义 | 异常表现 |
|---|---|---|
| notBefore/notAfter | 证书生效与到期时间 | 剩余天数过少即需列入续期排期 |
| subject | 证书主体(CN) | 与访问域名不一致 |
| subjectAltName | 实际覆盖域名列表 | 缺少 API 域、静态资源域或旧域名 |
| issuer | 签发证书的 CA | 自签证书出现在对外服务上 |
| Verify return code | 链校验结果 | 非 0 即链不完整或信任缺失 |
CA/Browser Forum 已通过决议分阶段缩短证书最长有效期,签发周期越来越短:续期流程要尽早自动化,具体时间表以官方公告为准。
只测主域名是常见遗漏:API 域、静态资源域、移动端接口域、邮件与内网控制台都要纳入台账,并记录责任人与到期日。
吊销状态(OCSP/CRL)同样在检查范围内:客户端在 OCSP 响应器不可达时的行为随实现而异,自建 CA 场景要把响应器可用性与超时策略一并核查,否则吊销证书可能仍被接受。