TLS协议升级仅保留TLS1.2/1.3兼容全浏览器
很多站长为了安全性,想把服务器TLS协议升级到只支持TLS 1.2和1.3,但又担心老浏览器用户访问不了。
其实当前主流浏览器(Chrome 30+、Firefox 27+、Edge 79+、Safari 9+)都原生支持TLS 1.2,TLS 1.3也在较新版本中得到兼容。
本教程将以Nginx和Apache两种环境为例,手把手教你完成升级操作,并给出验证方法和常见避坑指南。
第一步:检查当前环境与准备
在修改配置前,先确认服务器OpenSSL版本是否支持TLS 1.3。
SSH登录服务器后执行:
openssl version
确保版本号大于等于 1.1.1(TLS 1.3需要OpenSSL 1.1.1以上)。
如果版本过低,需要先升级OpenSSL(Ubuntu用 apt upgrade openssl,CentOS用 yum update openssl)。
同时备份现有配置文件:
# Nginx
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# Apache
cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak
第二步:修改配置,仅启用TLS 1.2和1.3
如果你使用Nginx
编辑Nginx的虚拟主机配置文件(通常位于 /etc/nginx/sites-available/你的网站.conf 或 /etc/nginx/conf.d/你的网站.conf),
在 server 块中找到 ssl_protocols 行,
修改为:
ssl_protocols TLSv1.2 TLSv1.3;
如果整行不存在,直接在 listen 443 ssl; 后面添加即可。
注意不能有多余空格或分号遗漏。
保存后测试配置:
nginx -t
若输出 syntax is ok 和 test is successful,则重新加载:
nginx -s reload
如果你使用Apache
编辑SSL配置文件(如 /etc/httpd/conf.d/ssl.conf 或 /etc/apache2/sites-available/default-ssl.conf),
找到 内部的 SSLProtocol 行,
修改为:
SSLProtocol -all +TLSv1.2 +TLSv1.3
保存后检查语法:
apache2ctl -t # 或 httpd -t
显示 Syntax OK 后重启Apache:
systemctl restart apache2 # 或 httpd
第三步:避坑指南——浏览器兼容性细节
- TLS 1.3 默认使用 1-RTT 握手,部分旧设备(如 Android 4.x 的默认浏览器)不支持,如果你的网站需要服务这类设备,建议保留TLS 1.2即可。本文方案已经保留TLS 1.2,只有极个别仍使用TLS 1.0/1.1的客户端(如 IE11 在 Windows 7 上)会被拒绝,而这类浏览器已经非常罕见。
- 证书链未正确配置可能导致部分浏览器提示“不安全”,与TLS版本无关。确保证书文件完整上传,并设置
ssl_certificate和ssl_certificate_key路径正确。 - CDN / 反向代理:如果你的服务器前端有Cloudflare、Nginx反向代理等,还需要在这些代理层同步修改TLS协议设置,否则最终用户仍然走代理的旧协议。
- 修改后立即访问网站出现“ERR_SSL_VERSION_OR_CIPHER_MISMATCH”:通常是因为服务器不支持客户端发起的协议握手。打开浏览器开发者工具(F12) > 安全标签,查看当前连接使用的TLS版本。如果显示TLS 1.0/1.1,说明配置未生效。
第四步:效果验证——确认仅启用目标协议
方法一:在线检测工具
推荐使用 SSL Labs(https://www.ssllabs.com/ssltest/),输入你的域名,等待扫描完成。
在“Configuration”一栏会列出支持的协议版本,确认只有TLS 1.2和1.3显示绿色对号。
方法二:命令行验证(本地机器需要curl支持)
# 测试TLS 1.2
curl --tlsv1.2 -I https://你的域名
# 测试TLS 1.3
curl --tlsv1.3 -I https://你的域名
# 测试TLS 1.0(应该失败)
curl --tlsv1.0 -I https://你的域名
如果TLS 1.0请求返回 curl:,
(35) error:
1409442E:
SSL routines:
ssl3_read_bytes:
tlsv1 alert protocol version
说明配置生效。
方法三:浏览器直接访问
用Chrome访问你的网站,点击地址栏左侧的小锁图标 >“连接是安全的” > 查看“协议”行。
如果显示 TLS 1.2 或 TLS 1.3,并且没有安全警告,就成功了。
如果你正在处理TLS协议升级仅保留TLS1.2/1.3兼容全浏览器,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
如果使用宝塔面板,可在网站设置 > SSL > TLS版本中选择“仅允许TLSv1.2和TLSv1.3”,操作更简单。
升级完成后至少观察一周,确保无用户反馈访问异常。