SSL 评级
不只是“证书有效吗?”,而是“整套 TLS 配置跟得上时代吗?”本页逐个单独探测每个协议版本,读取证书的密钥和签名,检查前向保密和 HSTS,并把结果汇总成一个字母评级——每一处扣分都给出解释,所以拿到 B 或 C 时你能确切知道要修什么。
想持续监控它吗?用 myeventwatch 免费监控——到期和宕机提醒,无需银行卡。
评级衡量什么
证书检查回答的是一份文档是否有效。一套配置可以通过这项检查却依然脆弱:对任何来问的人都应答 TLS 1.0 的服务器、能让未来的密钥泄露解密今天录下的流量的密码套件、缺失的 HSTS 头让首次访问可被降级。因此评级衡量四件事,每件在结果中都有自己的小节。协议矩阵分别以固定在 TLS 1.0、1.1、1.2 和 1.3 的方式各做一次握手——只有固定在某个版本的握手真正完成,该版本才算受支持,所以“受支持”是测出来的,而不是从碰巧协商成功的版本推断的。证书小节报告服务器出示的内容,哪怕它未通过验证:颁发者、覆盖的名称、有效期窗口、密钥类型与长度,以及签名算法。前向保密从协商出的密码套件读出:TLS 1.3 套件在设计上就是前向保密的,旧套件只有使用临时密钥交换时才算。还有 HSTS,从域名根路径的响应中读取,连同它的 max-age 和标志位。
一个刻意的省略:不检查 OCSP 装订。本服务使用的 TLS 库不暴露装订响应,所以评级工具无法观测它们,并如实说明,而不是猜测。装订对评级既不加分也不扣分;如果你在意它,用 openssl 从你自己的机器上检查。评级标准本身完整地写在下面,因为一个无法审计的评级只是一枚徽章。
评分标准,用通俗语言写明
每个站点从 A+ 开始,扣分会给评级封顶——取适用的最严封顶,每一条都会作为一项发现出现在结果中。F 表示浏览器拒绝该站点,或者根本没有可用的 TLS:证书过期、自签名证书、证书不覆盖该主机名、MD5 签名,或 443 端口上根本没有成功的握手。C 表示过时或不受信任:证书链验证不通过(通常是缺中间证书)、弱密钥(RSA 低于 2048 位,或椭圆曲线过小)、SHA-1 签名,或最高受支持协议为 TLS 1.1 或更低。B 表示真实但可以承受的弱点:新协议之外还开着一个旧协议,或协商出的密码套件没有前向保密。A 表示一个小问题:没有 HSTS 头、HSTS max-age 不足六个月,或证书已进入 30 天续期窗口。按顺序修复这些发现——先 F 和 C,再 B,最后 A——每次改动后重新评级;一小时的缓存意味着你可能要等缓存过期再复查修复结果。幕后,本页调用 sysosx 服务器上的 GET /api/check/ssl-grade,由它执行探测并把评级缓存一小时。
相关工具:SSL 检查器用于快速查看证书和到期倒计时,网站健康检查把可达性、证书、到期和记录放在一起,HTTP 状态链适用于 TLS 配置没问题但重定向路径有问题的情况,端口扫描器查看该主机上除 443 之外还在监听什么。想看这个域名历史上签发过什么、而不是它今天出示什么,请用证书透明度搜索。
延伸阅读:TLS 评级是怎样赢得和丢掉的——每个封顶背后的常见故障及其修复方法,按值得动手的顺序排列。
常见问题
这和 SSL 检查器有什么不同?
SSL 检查器只回答一个问题:这台服务器出示什么证书,它有效吗?评级工具审计整套 TLS 配置:服务器还提供哪些协议版本(TLS 1.0 到 1.3,各自单独探测)、协商出的密码套件是否提供前向保密、证书的密钥长度和签名算法,以及是否设置了 HSTS。要快速看到期倒计时时用检查器;想知道配置本身是否跟得上时代时用评级工具。
每个评级是什么意思?
A+ 是干净的结果:只有当前协议、前向保密、覆盖该主机名的有效证书链,以及长效 HSTS。A 表示一个小问题,通常是 HSTS 缺失或太短,或证书已进入 30 天续期窗口。B 表示真实但可以承受的弱点:还开着一个旧协议,或密码套件没有前向保密。C 表示有东西过时或不受信任:证书链验证不通过、弱密钥或 SHA-1 签名,或最高协议为 TLS 1.1 或更低。F 表示浏览器拒绝该站点,或根本没有可用的 TLS:证书过期、自签名或不匹配,或 MD5 签名。
为什么服务器仅仅因为支持 TLS 1.0 就被封顶到 B?
因为“受支持”是关于服务器的事实,而不是关于你的访客的。如今没有任何现行软件会协商 TLS 1.0,所以开着它换不来任何兼容性,只会让最弱的密码套件继续挂在那里。这个封顶是评级工具在拒绝把一套配置称作与时俱进——只要一个 1999 年的协议还在应答。关掉它通常只是一行配置,评级会立即恢复。
为什么评级工具不检查 OCSP 装订?
诚实的局限,页面上写明了:本服务使用的 TLS 库不暴露装订的 OCSP 响应,所以评级工具无法观测它们。它不猜测,而是把装订报告为“未检查”,让它对评级既不帮忙也不添乱。如果你需要装订,从你自己的机器运行 openssl s_client -connect host:443 -status 来检查。
为什么结果要缓存一小时?
评级只在服务器的 TLS 配置改变时才改变,而这种改变很少见且都是有意为之的——不像 DNS 传播,那里答案本身才是重点。和本站其他服务器端检查一样,新检查按访客限量(每小时约二十次,另有短时突发额度),缓存的结果会如实标注。如果你刚修完某样东西,等这一小时过去,或在缓存过期后重新检查。