Get an A+ grade on SSL Labs

您安装了SSL但SSL Labs只给您B或C?好的分数不是来自于简单地拥有证书——它来自于正确的TLS配置。本指南将逐步引导您直到您的网站在SSL Labs上获得A+。

什么是SSL Labs A+等级

SSL Labs(Qualys)是一个免费工具,可以扫描您服务器的SSL/TLS配置并从F到A+对其进行评分。A+是最高分数,需要您通过协议、密码和密钥交换的检查,并正确启用HSTS。A+表示您的网站以最新标准安全地加密连接。

SSL Labs对您的评分内容

一个常见的误解是简单地安装有效证书就够了。实际上,SSL Labs评估四个核心类别,然后使用最弱的一个来限制您的等级。这意味着一个薄弱区域会拖累整个分数,无论其他区域多强。理解权重分配可以让您修复正确的东西,而不是盲目猜测。

引擎评分的类别是:

一旦所有四个类别都达到A级,获得"A+"就是一个单独的奖励,需要启用HSTS。这是A和A+之间的分界线,许多网站都忽略了。

A+检查清单

在进行实际扫描之前,逐项检查此清单。如果每个复选框都打上勾,您获得A+的几率很高。下表总结了需要做什么和原因:

项目 所需状态 为什么重要
禁用TLS 1.0 / 1.1 都关闭 旧协议已过时且易受攻击;它们限制您的分数
启用TLS 1.3 打开(与TLS 1.2一起) 最快和最安全;获得完整协议分数
强密码 仅AES-GCM 删除弱RC4/3DES/CBC以避免失分
前向保密 ECDHE 即使密钥日后泄露,过去的流量也保持安全
HSTS max-age ≥ 6个月 从A升级到A+的强制条件
OCSP装订 打开 加快证书状态检查,降低握手延迟

第1步 — 禁用旧协议

仅启用TLS 1.2和TLS 1.3,禁用SSLv3、TLS 1.0和TLS 1.1。在Apache(mod_ssl)上:

SSLProtocol -all +TLSv1.2 +TLSv1.3

在Nginx上:

ssl_protocols TLSv1.2 TLSv1.3;

第2步 — 选择强密码套件

使用前向保密密码(ECDHE)并禁用RC4和3DES等弱密码。在Nginx上:

ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;

第3步 — 启用HSTS(获得A+的关键)

添加此标头以强制浏览器始终使用HTTPS——这是将A与A+区分开来的关键:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

准备好后,您可以在hstspreload.org上注册HSTS预加载列表。

第4步 — OCSP装订和DH参数

启用OCSP装订以加快证书状态检查,并使用2048位或更高的Diffie-Hellman密钥。在Nginx上:

ssl_stapling on; ssl_stapling_verify on;

注意:在启用HSTS预加载之前,确保每个子域都支持HTTPS,因为一旦预加载,删除它将很困难且缓慢。

启用TLS 1.3 + HSTS的示例配置(Nginx / Apache)

要了解每一步如何结合在一起,以下是一个完整配置,在一个地方启用TLS 1.2/1.3、强密码、HSTS和OCSP装订——准备好适应您的服务器。

Nginx(在监听443的server { ... }块内):

ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Apache(在<VirtualHost *:443>或您的ssl.conf内):

SSLProtocol -all +TLSv1.2 +TLSv1.3 SSLHonorCipherOrder on SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384 SSLUseStapling on SSLStaplingCache "shmcb:logs/ssl_stapling(32768)" Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

编辑配置后,在重新加载前始终测试语法,以防止服务器宕机:Nginx使用nginx -t然后systemctl reload nginx,而Apache使用apachectl configtest然后systemctl reload apache2(或在某些发行版上使用httpd)。

启用HSTS预加载前要检查的事项

HSTS预加载是一把双刃剑。它强制浏览器始终为您的域名使用HTTPS——直接烘焙到浏览器中——无需等待第一个标头,这非常安全但难以逆转。在提交到hstspreload.org之前,验证以下所有内容:

  1. 每个子域(包括您尚未使用的)都必须支持HTTPS,因为includeSubDomains覆盖所有子域——如果任何子域仍然仅为HTTP,用户将无法访问它。
  2. 顶点域和每个子域的证书必须自动续期;否则一旦证书过期,用户就无法绕过警告。
  3. 从较小的max-age(几小时)开始,一旦您确信就将其提高到一年,然后将preload作为最后一步添加。
  4. 从预加载列表中删除可能需要数月时间才能在所有浏览器中传播,所以在100%准备好之前不要急着预加载。

简而言之,普通的HSTS标头已足以获得A+。向预加载列表提交是一个额外步骤,仅保留给确定他们将永远使用HTTPS的网站。

使用SSL Labs验证

配置完成后,访问ssllabs.com/ssltest,输入您的域名并等待结果。如果您还没有达到A+,报告会告诉您确切的障碍所在——旧协议仍然启用,或缺少HSTS。修复它标记的内容并重新扫描。

有一个小陷阱会绊倒很多人:SSL Labs缓存您最近的扫描。如果您刚刚更改配置并立即重新扫描,您可能仍会看到旧结果。勾选"清除缓存"选项或向URL追加&clearCache=on以强制进行新扫描。还要记住在每次配置更改后重新加载或重启web服务,否则新值实际上还没有在服务器上生效。

另一个经常被忽视的问题是:如果您的网站位于CDN或反向代理(如Cloudflare)后面,最终用户看到的TLS配置属于边缘,而不是您的源服务器。所以如果您使用CDN,您也必须在CDN端调整TLS/HSTS——否则无论您如何完美配置源服务器,SSL Labs报告的等级仍然是边缘的。

长期保持您的A+

首次获得A+只是开始,因为安全标准不断变化。今天认为强的密码可能在几年后被降级,新协议不断到来。维持等级意味着定期重新检查——设置提醒每3-6个月扫描一次SSL Labs,或任何时候升级服务器时。

最常导致等级下降的因素很少:接近过期而您忘记续期的证书、重置密码设置为默认值的web服务器更新,以及在HSTS includeSubDomains已打开时添加没有SSL的新子域。设置自动证书续期和记录您调好的配置可以让您的网站可持续地保持在A+水平,而无需每次都从头开始修复。

常见问题

什么是SSL Labs A+等级?

A+是来自SSL Labs(Qualys)的最高分数,它评估服务器的SSL/TLS配置。要获得A+,网站必须禁用旧协议、仅允许TLS 1.2/1.3、使用强密码并正确启用HSTS。

我真的需要禁用TLS 1.0和1.1吗?

是的。TLS 1.0/1.1已被弃用并存在已知弱点。保持它们打开会降低您的分数并使您面临攻击风险。仅启用TLS 1.2和1.3。

A+等级需要HSTS吗?

是的。获得A+(而不是A)需要通过max-age至少为6个月的Strict-Transport-Security标头启用HTTP严格传输安全,强制浏览器始终使用HTTPS。

免费的Let's Encrypt证书可以达到A+吗?

可以。A+等级取决于您服务器的TLS配置,而不是证书是免费还是付费。Let's Encrypt证书使用相同的标准密钥和链。只要您禁用旧协议、使用强密码并正确启用HSTS,免费证书也能获得A+。

您可以配置为A+的SSL证书

AsiaGB提供来自RapidSSL和DigiCert的SSL,包括设置指导,从泰铢1,000/年开始。

查看SSL计划