为什么证书有效,评级却还是 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 的站点,对现代访客仍然是加密的,但它保留了一条降级路径,评分扣的就是这一点。