CertH certH
本页目录

为什么证书有效,评级却还是 F

更新于 2026-11-03 · 6 分钟阅读

小锁是对证书的陈述,不是对连接的陈述。一个站点可以出示完全有效、未过期、链完整的证书,却依然通不过 TLS 健康检查——有时候还低到 0 分。

小锁是一个很窄的承诺

浏览器显示小锁,只代表三件事:证书能链到受信任的根、覆盖了正在访问的主机名、没有过期。就这些。它不代表提供了哪些协议版本、接受哪些套件、是否会被降级攻击打穿。

TLS 评级问的是另一个问题:这个端点配得好不好,而不只是它到底能不能建立加密连接。

六类会导致低分的故障

以下是我们跟踪的两万个站点里最常见的成因,大致按扣分多少排序。

  • •证书已过期或尚未生效——无论其他项多好,直接 0 分。
  • •主机名不匹配——证书有效,但签给了另一个名字。域名迁移后、或 CDN 在不支持 SNI 时下发共享证书,都很常见。
  • •证书链不完整——缺中间证书,部分客户端建不出到根的路径。浏览器常常会兜住,API 客户端和移动端不会。
  • •仍启用历史协议——和现代版本一起提供 TLS 1.0 / 1.1,即便没人用也会拖低分数。
  • •弱套件或没有前向保密——静态 RSA 密钥交换意味着私钥一旦泄露,历史流量可被解密。
  • •握手失败——服务器直接拒绝探测,常见原因是强制要求 SNI,或防火墙规则拦了非浏览器客户端。

按顺序排查

先把证书问题和配置问题分开。证书过期或不匹配的话,在修好之前其他都不用看。证书没问题,就看协议列表——在证书有效性之后,它是低分的最大单一来源。

CertH 的域名报告会显示五个评分维度里哪一项丢了分,并给出具体扣分和修法,通常比手工读一遍完整扫描更快。

# What does the certificate actually cover?
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName -dates

# Which protocols does the server accept?
for v in tls1 tls1_1 tls1_2 tls1_3; do
  printf '%s: ' "$v"
  echo | openssl s_client -connect example.com:443 -$v -servername example.com 2>/dev/null | grep -q "Protocol" && echo yes || echo no
done

SNI 陷阱

一台托管多个域名的服务器需要靠 SNI 挑证书。有些配置强制要求 SNI,拒绝不带它的客户端——对浏览器没问题,但会让监控工具、老版本 Java 客户端和部分 API 库失败。如果扫描器报握手失败而浏览器一切正常,先查这个。

FAQ

证书有效、站点也能打开,为什么评级是 F?

评级衡量的是 TLS 配置,不只是证书有效性。过期或不匹配的证书确实直接 0 分,但历史协议、弱套件和断掉的证书链同样能把站点压到 F 以下,而浏览器仍然显示小锁。

评级低是不是说明我的站点不安全?

不一定是不安全,但比它应有的状态更弱。同时提供 TLS 1.0 和 TLS 1.2 的站点,对现代访客仍然是加密的,但它保留了一条降级路径,评分扣的就是这一点。

继续阅读