安全

SSL 证书检查

输入域名,由 DevKitLab 服务发起 TLS 握手,查看它连到的节点当前下发什么证书:还有多少天到期、证书链能不能被公有根证书库验证通过、域名是否匹配、SAN 覆盖了哪些主机名,以及服务器还接受哪些 TLS 版本。链上每张证书都可以导出 PEM,或一键送进证书解码器逐字段细看。免费,无需注册。

  • 由服务端对目标发起 TLS 握手,不用先拿到 PEM,填域名就行
  • 到期倒计时精确到天,同时给出生效与失效的准确时间
  • 信任链、域名匹配、有效期、链是否下发完整,四项分别给结论
  • TLS 1.0 到 1.3 逐版本探测,并显示每个版本协商出的加密套件
  • 完整证书链视图:SAN、密钥长度、指纹齐全,可导出 PEM 或 JSON

握手时发送的主机名。留空则使用上方的目标;当你直连某台 IP、却想取某个域名的证书时填这里。

输入域名后点击检查。到期倒计时、信任与域名结论、TLS 版本支持情况和完整证书链都会显示在这里。

功能简介

一次检查回答证书出问题时最常被追问的几件事:什么时候到期、是否受信任、覆盖了哪些域名、服务器实际协商出什么。

  1. 01

    到期倒计时

    剩余天数直接给数字,并随着期限临近变色,旁边配上以 UTC 表示的准确有效期区间。

  2. 02

    结论逐项分开给

    信任链、域名匹配、有效期、链是否下发完整、是否还开着已废弃的协议版本,这些都逐项判定,域名不匹配不会掩盖链本身不受信任的问题。

  3. 03

    证书覆盖的全部域名

    完整列出主体备用名称,含通配符,把子域名指向这台服务器之前就能确认它在不在覆盖范围内。

  4. 04

    TLS 版本支持情况

    TLS 1.0、1.1、1.2、1.3 逐个单独探测,接受的版本还会显示各自协商出的加密套件。

  5. 05

    服务器实际下发的链

    服务器证书、中间证书以及服务器附带的根证书逐张展开,签发者、公钥、用途、指纹、OCSP 与 CRL 地址一应列出。

  6. 06

    导出与转交

    证书链可导出为 fullchain.pem,整份结果可导出 JSON,也可以把任意一张证书直接送进证书解码器逐字段细读。

如何使用

像浏览器那样看一张证书:先填目标,再读结论,最后深入证书链。

  1. 01

    填入域名(直接粘贴完整 URL 也行,协议和路径会被忽略),点击检查。

  2. 02

    服务不在 443 端口就填端口;直连 IP 却要取某个域名的证书,就填 SNI。

  3. 03

    先看倒计时和检查项:是否受信任、域名是否匹配、是否在有效期内、链是否下发完整、有没有还开着的废弃协议。

  4. 04

    扫一眼 TLS 版本矩阵,确认 TLS 1.0 / 1.1 是否还开着,并留意协商出的加密套件。

  5. 05

    展开链上任意一张证书查看 SAN 和指纹,需要留档就导出 PEM 或 JSON。

功能说明

证书出问题的方式就那么几种,所以每一种在结果里都有独立的一行,而不是笼统地给一个通过或不通过。

  • 检查由 DevKitLab 服务真实握手完成,反映的是该服务连到的节点,而不是你本地浏览器缓存的结果
  • 信任与域名校验分开报告——证书本身完全合法,只是签给了别的域名,这种情况很常见
  • 链不完整会被单独指出来,哪怕你的浏览器靠 AIA 悄悄补上了,严格的客户端和老设备并不会
  • 已经过期的证书倒计时会显示为负数,问题有多严重一眼就能看出来
  • 支持在端口建立连接后立即开始 TLS 的服务,例如隐式 TLS 的邮件端口、LDAPS 和兼容的非标准端口服务
  • SNI 可以和目标主机分开填,方便单独测负载均衡后面的某台机器或某个 anycast 节点

适合哪些场景

证书有效期越来越短,90 天一轮换已经很常见;会来看这个页面的人,多半是刚刚发现哪里坏了。

  1. 确认续期真的生效了

    证书续签之后回来查一次目标本身:倒计时能证明新证书确实在对外提供,而不是签好了却躺在磁盘上没加载。

  2. 定位浏览器的证书警告

    把过期、链不受信任、域名不匹配这三种常见原因分开看,不用再对着浏览器的报错页猜。

  3. 排查漏配的中间证书

    浏览器打得开,curl、Java 或移动端却报错,基本都是服务器没把中间证书一起下发。

  4. 确认子域名在覆盖范围内

    上线前先看 SAN 列表,确认通配符或者那个具体域名确实写在证书里。

  5. 检查非标准端口上的服务

    465 的邮件、993 的 IMAPS、636 的 LDAPS,或其他一连上就开始 TLS 的服务——填上端口即可查看它下发的证书。

  6. 合规检查前先自查协议

    看清服务器是否还接受 TLS 1.0 / 1.1、各版本协商出什么套件,再把结果贴进工单。

延伸阅读

如果手里已经有 PEM 文件、想把每个扩展都逐字段解析开,可以用 证书解码器。如果域名压根解析不出来,或者要确认控制签发权限的 CAA 记录,先去 DNS 查询。想把证书指纹和别人给你的值做比对,可以在本地用 哈希生成器计算摘要。

使用建议

一次检查只是某个节点在某一刻的快照,下面这些习惯能让结果更有参考价值。

  • 用户实际输入的域名都要查一遍,包括带 www 和不带 www 的形式,它们常常由不同的配置提供服务。
  • 别等倒计时进入个位数才续期;自动续期悄悄失败,是最常见的故障原因。
  • 链不完整要当成真正的 bug 来修,哪怕浏览器能兜住——API 客户端、老版本 Android 和各语言运行时通常兜不住。
  • 负载均衡后面的机器,逐台按 IP 加 SNI 检查,避免某个节点还留着旧证书。
  • 确认没有业务依赖之后,尽早关掉 TLS 1.0 和 1.1,这两个版本已被弃用,也是审计里的常见扣分项。
  • 交接事故时把 JSON 导出连同工单一起存档,当时的状态就有了准确记录。

边界与注意事项

这个工具做的是一次出站 TLS 握手,并如实报告服务器出示了什么,范围比一份完整的安全评级要窄,这是刻意的。

  • 不做吊销检查。证书里的 OCSP 响应者和 CRL 地址会列出来,但不会去查询,所以一张已被吊销的证书在这里仍可能显示为有效。
  • 只能检查公网可达的主机。内网、回环、链路本地和保留地址一律拒绝,内部服务器请用本地的 openssl s_client 之类的工具。
  • 结果反映的是我们的服务器连到的那个节点。anycast 或按地域调度的架构,可能对其他地区下发另一张证书。
  • 不给等级评分。加密套件优先级、密钥交换强度、已知协议漏洞都不在这次检查的范围内。
  • 证书透明度日志、HSTS 策略、混合内容属于另外的话题,这里不做检测。
  • 检查经由 DevKitLab 的服务发起,由它代为连接目标;目标主机看到的是我们的地址,不是你的。

常见问题

关于到期时间、信任错误、域名不匹配、端口,以及这次检查不覆盖什么的常见问题。

怎么查一个网站的 SSL 证书?

填入域名(example.com,或者直接粘贴完整 URL,协议和路径会被忽略),点击检查。工具会对该主机发起一次 TLS 连接,报告它下发的证书:还剩多少天到期、证书链是否受信任、域名是否匹配、SAN 有哪些,以及服务器接受哪些 TLS 版本。

我的 SSL 证书什么时候过期?

结果顶部的倒计时就是当前正在提供服务的这张证书的剩余天数,旁边配有以 UTC 表示的生效与失效时间。数字为负,说明它已经过期了那么多天。

“证书链不受信任”是什么意思?

意思是服务器出示的这条链,没能一路验证到公共根证书库里的某张根证书。常见原因有:证书是自签名的、用的是公网客户端不认识的内部 CA、漏配了中间证书,或者证书本身已经过期。验证器返回的具体原因会显示在这一项旁边。

为什么提示证书和域名不匹配?

证书只对它 SAN 里写明的名字有效,而 *.example.com 这样的通配符只覆盖一级标签——它匹配 api.example.com,但不匹配 example.com,也不匹配 a.b.example.com。本工具把信任和域名分成两项报告,所以你能看到“链本身完全合法、只是签给了别的域名”这种情况。

浏览器能打开,curl 或者 App 却报错,为什么?

这种组合几乎都是服务器没有下发中间证书。浏览器可以顺着证书里的 AIA 地址自己把缺的那张补下来,悄悄地就过去了;而 curl、Java、Go 和老一些的移动设备通常不会。“证书链下发完整”这一项针对的就是这个问题。

可以检查 443 以外的端口吗?

可以。填端口字段,或者直接把主机写成 example.com:8443。适用于连接后立即开始 TLS 的服务,例如 465 的邮件提交、636 的 LDAPS。需要先明文打招呼再升级的协议(例如 587 端口上的 STARTTLS),以及必须先完成自身协议协商才能启用 TLS 的服务,都不支持。

SNI 是什么,什么时候需要填?

SNI 是握手时发送的主机名,让一台承载多个站点的服务器知道该出示哪张证书。默认取你填的目标主机。当你直连某个 IP、却想要某个特定域名的证书时就手动填它——单独测负载均衡后面的某台机器很好用。

这个工具会检查证书是否被吊销吗?

不会。证书里公布的 OCSP 响应者和 CRL 地址会列出来,结果里也会显示服务器握手时有没有装订 OCSP 响应,但这些地址不会被实际查询。一张已被吊销、却还在有效期内的证书,在这里仍会显示为有效。

还需要支持 TLS 1.0 和 1.1 吗?

一般不需要了。主流浏览器在 2020 年就已停止支持这两个版本,安全审计也常常会点名。版本矩阵会逐个探测四个版本,让你看到服务器实际接受什么,而不是配置文件上写着什么——只要还接受已废弃的版本,这里就会给出警告。

能检查 localhost 或者内网服务器吗?

不能。检查是从我们的服务器发起的,只能访问公网上的主机,内网、回环、链路本地和保留地址会被直接拒绝。内部主机请在本地执行 openssl s_client -connect host:port -servername host,再把拿到的 PEM 粘进证书解码器。

更多相关工具

手里已有证书就直接解析,或者顺着这个域名继续往下查 DNS 记录和它背后的地址。