什么是SSL 证书检测?
SSL 证书检测工具与目标建立 TLS 连接,读取完整证书链,展示每一级的主体、签发者、有效期与剩余天数,以及协商出的 TLS 版本与加密套件,并指出链路校验失败的原因。读取证书需要完成握手,因此由服务端完成。
怎么用SSL 证书检测?
- 1输入域名,需要非标准端口时写成 host:port。
- 2点击「检测」,查看剩余有效期与证书链。
- 3链路校验未通过时,按提示的原因排查(最常见是缺少中间证书)。
- 4确认 SAN 是否覆盖你实际使用的所有域名。
在代码里怎么实现?
一次性操作用上面的工具,重复性工作建议固化到脚本或项目里。
OpenSSL
# 查看有效期与主体 echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \ | openssl x509 -noout -dates -subject # 检查证书链是否完整 openssl s_client -showcerts -servername example.com -connect example.com:443 < /dev/null
常见错误与排查
| 现象 | 成因 | 修复 |
|---|---|---|
| 浏览器报证书不受信任,但证书本身没过期 | 服务端没有下发中间证书,浏览器无法构建到根证书的完整链路。 | 把中间证书与服务器证书拼接成 fullchain 后再配置到 Nginx 的 ssl_certificate。 |
| 换了域名后报 SAN 不匹配 | 证书的 SAN 列表里没有新域名。 | 重新签发证书并把所有要用的域名都加入 SAN,CN 字段现代浏览器已不再参考。 |
常见问题
为什么本工具能读出过期证书的信息?+
因为握手时故意不中断校验失败的连接——如果直接拒绝,你就看不到「证书过期了多久」这类关键信息。校验结论会单独以「链路校验未通过」的形式给出。
证书快到期了怎么自动续?+
用 ACME 客户端(certbot、acme.sh、lego)配合定时任务自动续期,并在续期后 reload 服务。同时建议对剩余天数做监控告警,把阈值设在 15 天左右,留出手工介入的时间。