Nginx TLS1.2 TLS1.3配置

配置前的准备条件

做 Nginx TLS1.2 和 TLS1.3 配置之前,你需要确认几点:

  • 已经安装好 Nginx(建议至少 1.9.1 版本,因为 TLS 1.3 需要 OpenSSL 1.1.1+,Nginx 版本至少 1.13.0)。
  • 拥有一个域名(比如 example.com),并且已经解析到服务器 IP。
  • 获取 SSL 证书(免费可用 Let's Encrypt 或阿里云/腾讯云免费证书,后续会提到如何放置)。
  • 能够登录服务器(SSH 或宝塔面板均可)。

如果你还没装 Nginx,可以用以下命令快速安装(CentOS / Ubuntu 通用):

# CentOS
sudo yum install nginx -y

# Ubuntu / Debian
sudo apt update && sudo apt install nginx -y

安装后启动 Nginx:sudo systemctl start nginx

修改 Nginx 配置文件开启 TLS 协议

核心操作就是修改 server 块 中的 ssl_protocols 指令。
默认情况下,很多老配置只写了 TLSv1.2,我们需要加入 TLSv1.3

首先找到你的 Nginx 配置目录(通常为 /etc/nginx/conf.d//usr/local/nginx/conf/)。
假设你的站点配置文件是 example.com.conf,用编辑器打开:

sudo vi /etc/nginx/conf.d/example.com.conf

确保里面已经有一段监听 443 端口的 server 块,内容类似:

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/privkey.pem;

    # 关键行:指定支持的 TLS 版本
    ssl_protocols TLSv1.2 TLSv1.3;

    # 其他配置...
}

重点说明

  • 只写 TLSv1.2 TLSv1.3,不要写 TLSv1TLSv1.1,它们不安全。
  • TLSv1.3 必须在 OpenSSL 1.1.1 以上才支持,检查 OpenSSL 版本:openssl version
  • 如果你使用了宝塔面板,可以在网站设置 → SSL → TLS 协议中选择“TLSv1.2 TLSv1.3”,不用手动改文件。

保存文件后测试配置是否正确:

sudo nginx -t

如果输出 syntax is oktest is successful,再重启 Nginx:

sudo systemctl reload nginx

补充 TLS 证书和密码套件建议

仅仅开启协议还不够,建议同时配置 强密码套件,让浏览器使用更安全的加密算法。
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;
ssl_ecdh_curve secp384r1;

注意:如果你使用的是宝塔面板,在 SSL 配置中勾选“启用经典 TLS 套件”即可,宝塔会帮你设置合理的密码套件。

高频问题与避坑说明

问题 1:配置后网站无法访问,或者提示 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

常见原因是 OpenSSL 版本太低,不支持 TLS 1.3。
openssl version 查看,如果小于 1.1.1,需要升级:

# CentOS 7 可以使用 SCL 源安装新版本
sudo yum install centos-release-scl -y
sudo yum install devtoolset-9 -y
scl enable devtoolset-9 bash
# 然后编译安装 OpenSSL 并重新编译 Nginx(步骤略繁琐,建议直接换 Ubuntu 20+)

如果不想折腾,可以暂时只保留 TLSv1.2,等系统升级后再加 TLSv1.3

问题 2:配置后 HTTP 访问正常,HTTPS 访问跳转不正常

检查 443 端口监听是否开启,以及证书路径是否正确。
使用 sudo netstat -tulpn | grep 443 确认 Nginx 在监听。

避坑 1:不要在同一个 server 块中同时写 ssl_protocolsssl_ciphers 发生冲突

通常情况下写在 server 块内即可,如果多个站点共用一套配置,可以提到 http 块中设为全局。

避坑 2:不要自己乱改密码套件顺序,建议使用 Mozilla SSL Configuration Generator 生成

验证 HTTPS 是否支持 TLS 1.2 和 1.3

配置完成后,用两种方式验证:

  1. 浏览器直接访问:打开 Chrome 或 Edge,按 F12 → 安全 → 查看连接,应该能看到“TLS 1.3”。
  2. 在线检测工具:访问 SSL Labs 输入你的域名,检测评级最好达到 A 或 A+。
  3. 命令行快捷验证(在服务器本地或任何有 curl 的机器上):
# 检查支持的协议版本
curl --tlsv1.2 -I https://example.com  # 应该成功返回
curl --tlsv1.3 -I https://example.com  # 如果报错“SSL connect error”,说明 TLS 1.3 未生效

如果两条命令都返回 200 状态码,说明 Nginx TLS1.2 和 TLS1.3 配置正确。

最后,建议定期检查证书有效期,并将 ssl_protocols 更新为仅保留 TLSv1.2 TLSv1.3,禁掉更旧的协议。
遇到异常时优先回看避坑和高频问题部分,大部分情况下是 OpenSSL 版本或证书路径问题。
祝你配置顺利!

分享到:
上一篇
不受支持的协议修复:修复不受支持的协议
下一篇
Nginx高危漏洞修复:零基础也能完成的安全加固教程
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意