服务器仅开启TLS1.2 TLS1.3安全Nginx配置

为什么必须禁用低版本 TLS

许多老旧服务器默认开启 SSLv3、TLS 1.0、TLS 1.1,但这些协议存在已知漏洞(如 POODLE、BEAST),极易被中间人攻击。
现代 Web 安全最佳实践是仅保留 TLS 1.2 和 TLS 1.3
TLS 1.3 握手更快、加密更强,而 TLS 1.2 作为兼容性底线。
如果你在运营网站或 API 服务,服务器仅开启TLS1.2 TLS1.3安全Nginx配置 是一项必须立刻执行的操作。

操作前请确认这些条件

  • 已登录服务器(SSH 或云控制台)。
  • Nginx 已安装并可正常运行。
  • Nginx 版本:建议 1.18.0 以上(低版本也可能支持,但推荐更新)。查看版本命令:nginx -v
  • OpenSSL 版本:TLS 1.3 需要 OpenSSL 1.1.1 及以上。查看命令:openssl version
  • 网站已配置 HTTPS(SSL 证书)。没有证书?可先用自签名测试,或参考本站《免费申请 Let's Encrypt 证书》教程。

一步步配置 Nginx 仅允许 TLS 1.2 和 1.3

  1. 找到 Nginx 配置文件

一般主配置为 /etc/nginx/nginx.conf,虚拟主机配置在 /etc/nginx/conf.d//etc/nginx/sites-enabled/
使用命令打开:

   sudo vi /etc/nginx/nginx.conf
  1. 定位 server 块

找到你网站的 server { ... } 段落。
通常在 listen 443 ssl; 之后。

  1. 添加 / 修改 ssl_protocols 指令

在 server 块内(一般在 ssl_certificate 行附近)写入:

   ssl_protocols TLSv1.2 TLSv1.3;
注意:TLSv1.2TLSv1.3 之间用空格分隔。不要包含 SSLv3TLSv1TLSv1.1
  1. 可选:同时禁用不安全的密码套件(推荐)

紧跟在 ssl_protocols 下方添加:

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

这样只有强密码套件被允许,进一步降低风险。

  1. 保存文件并测试配置

使用以下命令测试语法是否正确:

   sudo nginx -t

若输出 syntax is oktest is successful,说明配置无错。

  1. 重启 Nginx 使配置生效
   sudo systemctl reload nginx   # 或 sudo nginx -s reload

常见错误和解决办法

| 错误现象 | 可能原因 | 解决办法 |
|----------|----------|----------|
| 重启后 HTTPS 无法访问 | 填写了错误的 ssl_protocols 字符串(如多余空格或拼写错误) | 检查 nginx -t 输出,修正后重载 |
| 浏览器提示“不支持的协议” | 客户端(如旧浏览器)只支持 TLS 1.0/1.1 | 如果你的用户群体必须兼容极旧设备,可考虑保留 TLS 1.2 以上,但建议提醒用户更新浏览器 |
| nginx -t 报“unknown directive ”ssl_protocols”” | Nginx 编译时未包含 SSL 模块 | 重新编译 Nginx 并添加 --with-http_ssl_module,或安装带 SSL 的版本 |
| 重启后配置没生效 | 忘记 reload 或修改了错误的配置文件 | 确认你修改的是实际生效的配置(可执行 nginx -T 查看全量配置) |

如何验证配置生效

  • 在线 SSL 检测:访问 SSL Labs 输入你的域名,检测报告中会清晰列出启用的协议,仅看到 TLS 1.2TLS 1.3 即成功。
  • 命令行测试:使用 OpenSSL 客户端连接:
  openssl s_client -connect yourdomain.com:443 -tls1_2   # 应成功
  openssl s_client -connect yourdomain.com:443 -tls1_1   # 应失败
  openssl s_client -connect yourdomain.com:443 -ssl3     # 应失败

如果失败命令输出类似 sslv3 alert handshake failure,说明低版本已被禁用。

避坑说明

  • 不要直接在全局 http 块设置 ssl_protocols(除非所有 server 都想要相同配置)。但建议在各自 server 块单独设置,避免覆盖影响其他站点。
  • TLS 1.3 需要 OpenSSL >= 1.1.1。如果你的 OpenSSL 版本较低,可以先升级 OpenSSL,或只开启 TLS 1.2。
  • 修改配置前备份原文件cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak,方便回退。
  • 如果网站有负载均衡或 CDN,需要在 Nginx 源站和 CDN 两端都做协议限制,否则 CDN 可能用低版本回源。

完成以上步骤后,你的 Nginx 服务器已经只接受 TLS 1.2 和 TLS 1.3 的安全连接,有效提升了 HTTPS 安全性。
如果你在配置过程中遇到其他问题,欢迎在评论区留言交流。

分享到:
上一篇
网站提示此网站无法提供安全连接根治办法(详细实操)
下一篇
多层反向代理导致TLS协议降级故障排查
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意