A+是证书有效、TLS版本干净、HSTS合理启用、密钥交换强健的自然结果;需确保域名解析到位、用Certbot自动申请Let’s Encrypt证书、禁用TLSv1.0/1.1、配置现代加密套件、开启OCSP Stapling并清除混合内容。

想把 Nginx 站点配出 A+ 级 HTTPS,关键不在“堆配置”,而在于每一步都踩准安全基线:域名可验证、证书可信且更新及时、Nginx 加密策略无短板、混合内容彻底清零。A+ 是结果,不是起点——它自然出现在证书有效、TLS 版本干净、HSTS 合理启用、密钥交换强健的组合之后。
域名准备与解析到位
域名是 HTTPS 的前提,不是买了就能用。必须确保:
- 已完成实名认证与备案(国内服务器强制要求)
- 已添加正确的 A 记录或 CNAME 记录,指向你的 Nginx 服务器公网 IP 或 CDN 入口
- DNS 解析生效(可用 dig yourdomain.com +short 或 nslookup 验证)
- 若使用 Cloudflare 等 CDN,确认你选择的验证方式匹配:HTTP-01 需源站可访问;DNS-01 则无需暂停 CDN,适合泛域名或复杂架构
证书申请:优先选 Let’s Encrypt + Certbot 自动化
对绝大多数场景,免费、自动、可信的 Let’s Encrypt 就是最优解。不推荐手动下载再上传,容易遗漏中间证书或路径写错。
- 安装 Certbot:sudo apt update && sudo apt install certbot python3-certbot-nginx(Ubuntu/Debian)
- 一键申请并自动配置:sudo certbot --nginx -d example.com -d www.example.com
- 验证续期是否正常:sudo certbot renew --dry-run。通过即代表后续可全自动续期
- 如需通配符证书(如 *.example.com),改用 DNS-01 插件,按提示在域名控制台添加 TXT 记录即可
Nginx HTTPS 配置:不止于加证书
只把证书文件路径填进 server 块,最多拿到 B 级。A/A+ 要求更严:
- 监听 443 端口时,明确指定 ssl_protocols TLSv1.2 TLSv1.3,禁用 TLSv1.0 和 TLSv1.1
- 选用现代 cipher suite,例如:ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
- 开启 OCSP Stapling:ssl_stapling on; ssl_stapling_verify on;,提升验证效率与隐私
- 强制 HTTP 跳转 HTTPS:return 301 https://$host$request_uri; 放在 80 端口 server 块中
- 启用 HSTS(非 preload):add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;。确认全站无 HTTP 资源后再加,否则会导致页面白屏
上线前必做的三件事
配置完别急着 reload,先做这三项检查:
- 混合内容扫描:打开 Chrome DevTools → Console 标签页,看是否有 Mixed Content 报错。所有资源(js/css/img/font/iframe)必须走 HTTPS
- SSLLabs 测评:访问 SSL Labs 输入域名,等 1–2 分钟看报告。重点关注 Protocol Support、Key Exchange、Cipher Strength 三栏是否全绿
- 证书链完整性验证:用命令 openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -text 查看是否包含完整中间证书。缺失会导致部分老客户端握手失败


















