直接用SSL Labs测试域名即可客观验证Nginx HTTPS配置是否达A+,需关闭CDN、确保DNS直连Nginx公网IP且443端口开放,重点核查协议(仅TLS1.2/1.3)、密钥交换(ECDHE+secp256r1/x25519)、密码套件(PFS且无弱算法)、握手模拟(主流客户端全“Yes”),并修正ssl_protocols、ssl_ciphers、OCSP stapling、HSTS、fullchain.pem、80→443 301跳转、HTTP/2及无混合内容。

直接用 SSL Labs(Qualys)测试你的域名,就能客观验证 Nginx 的 HTTPS 配置是否达到 A+。这不是主观打分,而是基于协议行为、密码强度、响应头策略和资源加载真实性的综合评测。关键不在于堆参数,而在于避开所有已知扣分项。
测试前必须做的三件事
SSL Labs 测的是你真实服务器的 TLS 行为,不是 CDN 或代理层的配置:
- 临时关闭 Cloudflare、阿里云 CDN、腾讯云 WAF 等所有中间层,切换为 “DNS only” 模式
- 确认域名 DNS 解析直连到你的 Nginx 服务器公网 IP(可用
dig +short yourdomain.com验证) - 检查云平台安全组和本地防火墙,确保 443 端口对外开放,且无 NAT 或反向代理干扰(如 Traefik → Nginx 场景,要测终止 TLS 的那台)
看懂 SSL Labs 报告的四个核心模块
提交测试后,重点盯住这四块结果,每一条红色警告都对应一行可修正的 Nginx 配置:
- Protocol Support:只应显示 TLS 1.2 和 TLS 1.3 ✔️;出现 TLS 1.0/1.1 直接扣分
- Key Exchange:密钥交换必须是 ECDHE + secp256r1 或 x25519;RSA 密钥交换或弱曲线(如 secp384r1 在部分旧版中可能被标黄)会降级
-
Cipher Suites:所有启用套件必须支持前向保密(PFS),且不含 RC4、3DES、SHA-1、MD5;TLS 1.3 套件优先(如
TLS_AES_128_GCM_SHA256) - Handshake Simulation:Chrome、Firefox、iOS Safari、Edge 等主流客户端必须全显示“Yes”;任一“Fail”或“Warning”即无法拿 A+
Nginx 配置关键修正点
对照报告逐条修复,以下是最常出问题的几项:
- 协议限制:
ssl_protocols TLSv1.2 TLSv1.3;(务必去掉 TLSv1 和 TLSv1.1) - 加密套件精简:
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';(禁用所有非 AEAD 套件) - OCSP Stapling:
ssl_stapling on; ssl_stapling_verify on;,并配好resolver 8.8.8.8 1.1.1.1 valid=300s;和ssl_trusted_certificate /etc/nginx/ssl/fullchain.pem; - HSTS 强制启用:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;(首次上线建议先设max-age=300观察 5 分钟,确认无子域 HTTP 资源再拉长)
别漏掉证书链与基础完整性
A+ 不只看加密参数,还依赖底层正确性:
-
ssl_certificate必须指向包含根证书 + 中间证书的fullchain.pem(不是cert.pem),否则“证书链不完整”直接 B 级起评 - HTTP 80 端口必须配置 301 跳转:
return 301 https://$host$request_uri; - 确保启用 HTTP/2:
listen 443 ssl http2; - 页面内所有资源(CSS、JS、图片、iframe)必须走 HTTPS,杜绝混合内容(Mixed Content)——SSL Labs 会实际抓取 HTML 并扫描
测试通过后,若想进入 HSTS Preload 列表,需访问 hstspreload.org 提交,审核通常 1–2 周,提交后不可撤回,务必确认全站子域均已支持 HTTPS。


















