
1. 项目概述从“SSL”到“TLS”的认知纠偏每次看到有人在配置Nginx时还在配置文件里写ssl_protocols TLSv1 TLSv1.1 TLSv1.2;或者讨论问题时把“SSL证书”和“TLS协议”混为一谈我就知道是时候写点东西来彻底理清这团乱麻了。这不仅仅是术语的较真更关系到你线上服务的安全性、性能和兼容性。很多新手甚至一些有经验的运维都可能被“SSL/TLS”这个捆绑称呼给误导了认为它们是一回事或者SSL是TLS的某个版本。这种混淆直接导致了配置上的错误比如在追求极致安全的今天服务器上还运行着早已被攻破的SSLv3或者因为配置不当无法让现代浏览器享受到TLS 1.3带来的性能飞跃。简单来说SSLSecure Sockets Layer和TLSTransport Layer Security是同一件事物的不同代际。SSL是网景公司Netscape在上世纪90年代发明的经历了SSL 1.0未发布、SSL 2.0、SSL 3.0。由于SSL 3.0被发现存在严重的设计缺陷如POODLE攻击它已经被彻底废弃。TLS则是IETF互联网工程任务组在SSL 3.0基础上标准化而来的你可以理解为SSL 3.1被重命名为了TLS 1.0。所以我们今天用的从TLS 1.0到TLS 1.3都是TLS协议。当你申请“SSL证书”时其实你申请的是用于TLS协议的非对称加密证书这个名字只是历史遗留的习惯叫法。那么为什么我要强调“从Nginx配置实战看TLS 1.3如何全面碾压老协议”因为理论再好不落地都是空谈。网上很多文章只讲协议原理一到实际操作就语焉不详。我将带你从最根本的协议差异讲起然后手把手在Nginx上配置并启用TLS 1.3并通过实际的测试数据让你直观地看到TLS 1.3在安全性和性能上对TLS 1.2及更早协议的“降维打击”。无论你是正在为网站部署HTTPS的前端开发者还是负责维护公司网关的运维工程师这篇文章都能帮你构建清晰的知识框架并提供一个可直接复制粘贴的生产级配置参考。2. 核心概念辨析SSL、TLS与协议演进史2.1 SSL与TLS的本质区别与历史脉络要彻底告别混淆我们必须回到历史中去看。SSL协议是网景公司的“亲儿子”它的诞生是为了解决早期互联网通信明文传输的安全问题。SSL 2.01995年很快被发现有一堆毛病比如使用弱MAC消息认证码算法容易遭受中间人攻击。于是SSL 3.01996年被推出它引入了许多现代TLS协议的雏形比如更完整的握手流程、支持更多的加密套件。在很长一段时间里SSL 3.0是互联网安全的基石。然而标准的江湖不能总由一家公司把持。IETF接手了这项工作在SSL 3.0的基础上制定了第一个开放标准——RFC 2246并将其命名为TLS 1.0。你可以把它想象成“SSL 3.1”但两者并不完全兼容。TLS 1.0修复了SSL 3.0的一些小漏洞但核心架构相似。自此协议的发展进入了TLS时代。所以一个至关重要的结论是SSL是TLS的前身但所有SSL版本包括SSL 3.0在现代安全标准下都已是不安全、被废弃的协议。我们今天谈论和使用的100%是TLS协议1.0, 1.1, 1.2, 1.3。当你遇到“服务器不支持SSL”的错误时大概率是客户端比如一个旧的程序库试图使用SSLv3或更早的协议进行连接而被已经正确配置的服务器拒绝了。注意很多软件、文档和命令行工具为了保持历史兼容性依然使用“ssl”作为前缀或名称的一部分比如OpenSSL库、Nginx的ssl_*指令。这加剧了概念的混淆。请务必在脑海中建立一个映射在这些上下文中“ssl”通常泛指“SSL/TLS加密套件”其实现代版本实现的都是TLS协议。2.2 TLS 1.2曾经的黄金标准与它的阿喀琉斯之踵TLS 1.2RFC 52462008年发布统治了互联网安全近十年是当之无愧的黄金标准。它相比TLS 1.0/1.1做了重大改进比如将哈希算法和签名算法的选择分离开支持更强大的密码套件如AES-GCMSHA256。我们目前绝大多数安全连接都运行在TLS 1.2上。但是TLS 1.2的设计是十多年前的它背负着沉重的历史包袱以保持向后兼容。这导致了几个关键问题握手慢延迟高一次完整的TLS 1.2握手需要两次往返2-RTT。客户端说“你好”服务器回复“你好证书”客户端再验证证书并发送密钥交换信息服务器最后确认。对于像HTTP/2这样的协议首次连接延迟非常明显。密码套件庞杂且不安全TLS 1.2支持一个非常长的密码套件列表其中包含大量已知不安全的算法如RC4、DES以及一些有风险的密钥交换算法比如基于RSA的密钥交换不具备前向安全性。服务器和客户端需要从这一长串列表中协商出一个双方都支持的套件过程复杂且容易配置失误留下安全漏洞。易受降级攻击由于兼容性考虑协议需要支持与旧版本客户端的协商机制攻击者可能利用这一点将连接降级到不安全的TLS 1.0甚至SSL 3.0。正是这些问题催生了TLS 1.3的革命性设计。2.3 TLS 1.3为现代互联网而生的安全协议TLS 1.3RFC 84462018年发布不是一个简单的版本迭代而是一次彻底的重构。它的设计哲学是“安全、简单、快速”。为了达成这个目标TLS 1.3做出了以下大刀阔斧的改革废弃所有不安全的算法一次性移除了RSA密钥传输、静态DH、RC4、DES、3DES、CBC模式、SHA-1等数十个存在安全隐患的算法和加密模式。现在所有密钥交换都基于前向安全的PFS的迪菲-赫尔曼DH或其椭圆曲线变体ECDHE。加密则主要使用AES-GCM或ChaCha20-Poly1305这类现代认证加密算法。简化并加速握手1-RTT甚至0-RTTTLS 1.3将握手过程压缩到了1次往返1-RTT。客户端在第一个“Client Hello”消息中就猜测服务器可能支持的密钥交换参数并直接发送自己的密钥分享信息。服务器回复时可以直接完成密钥交换。对于重复访问还支持0-RTT模式进一步降低延迟。密码套件语义化TLS 1.3的密码套件不再像以前那样指定密钥交换、认证、加密、哈希一整套算法而只指定用于记录层保护的AEAD认证加密算法和哈希算法。密钥交换算法被独立出来协商大大简化了选择过程。增强的抗降级攻击能力通过在握手消息中加密更多信息并引入新的扩展TLS 1.3能更有效地抵御版本降级攻击。这些改变使得TLS 1.3不仅在安全性上无懈可击消除了很多传统攻击面更在性能上带来了质的提升尤其对于移动网络和高延迟环境下的用户体验改善巨大。3. Nginx中TLS协议配置的深度解析3.1 核心配置指令ssl_protocols与ssl_ciphers在Nginx中控制TLS协议行为的核心指令就两个ssl_protocols和ssl_ciphers。理解它们是进行安全配置的基石。ssl_protocols这个指令指定Nginx服务器支持哪些TLS协议版本。它的值是一个或多个由空格分隔的协议。这是最容易出错的地方。# 错误配置示例包含了不安全的SSLv3 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; # 过时但常见的配置支持TLS 1.0/1.1/1.2但TLS 1.0/1.1已被现代标准认为不够安全 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 当前2023年后推荐的安全基线配置仅启用TLS 1.2和1.3 ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers这个指令指定Nginx在协商加密时优先使用哪些密码套件以及它们的优先级顺序。这是一个非常复杂的字符串直接决定了连接的安全强度。一个弱的ssl_ciphers配置即使你只启用了TLS 1.2也可能导致连接不安全。# 一个过于宽松不安全的配置示例 ssl_ciphers HIGH:!aNULL:!MD5; # 一个现代、安全且兼容性较好的TLS 1.2/1.3配置后面会详细解释其含义 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;实操心得永远不要使用Nginx的默认ssl_ciphers设置。不同版本、不同编译方式的Nginx其默认值可能不同且可能包含不安全的套件。显式地配置ssl_ciphers是保证安全的最佳实践。3.2 启用TLS 1.3的前提条件与检查不是所有的Nginx都能直接使用TLS 1.3。你需要满足以下条件Nginx版本Nginx从1.13.0版本开始实验性支持TLS 1.3但生产环境建议使用1.14.0或更高版本以获得更稳定的支持。最好使用1.16.0或最新的稳定版。OpenSSL库这是最关键的一环。Nginx依赖于OpenSSL库来实现TLS。要支持TLS 1.3你必须使用OpenSSL 1.1.1或更高版本进行编译。编译参数在编译Nginx时需要通过--with-openssl或--with-openssl参数指向支持TLS 1.3的OpenSSL源码路径。如何检查你的Nginx是否支持TLS 1.3# 执行以下命令查看编译信息和模块 nginx -V 21 | grep -E “(TLSv1.3|OpenSSL)”如果输出中包含TLSv1.3并且OpenSSL版本是 1.1.1 或以上那么恭喜你你的Nginx已经具备了支持TLS 1.3的能力。如果看不到TLSv1.3或者OpenSSL版本是 1.0.2 或 1.1.0那么你需要重新编译或升级Nginx。3.3 构建支持TLS 1.3的Nginx环境如果你的环境不支持以下是基于CentOS 7/8或Ubuntu 18.04/20.04的编译升级指南。我们选择从源码编译以获得最大的控制权。步骤一安装编译依赖# CentOS/RHEL sudo yum groupinstall -y “Development Tools” sudo yum install -y pcre-devel zlib-devel # Ubuntu/Debian sudo apt update sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev步骤二下载最新版OpenSSL和Nginx源码# 创建一个工作目录 mkdir ~/nginx-build cd ~/nginx-build # 下载OpenSSL 1.1.1以1.1.1w为例请检查官网是否有更新 wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar -xzf openssl-1.1.1w.tar.gz # 下载Nginx稳定版以1.24.0为例 wget https://nginx.org/download/nginx-1.24.0.tar.gz tar -xzf nginx-1.24.0.tar.gz cd nginx-1.24.0步骤三配置并编译Nginx这里我们使用一个兼顾性能和常用功能的配置。--with-openssl参数指向我们下载的OpenSSL源码目录。./configure \ --prefix/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-openssl../openssl-1.1.1w \ --with-http_v3_module \ # 可选如需HTTP/3/QUIC支持 --with-stream \ --with-stream_ssl_module make -j$(nproc) # 并行编译加快速度 sudo make install步骤四验证安装/usr/local/nginx/sbin/nginx -V再次检查输出确认TLSv1.3出现在configure arguments中并且OpenSSL版本正确。注意事项如果你系统上已有旧版Nginx在运行直接make install会覆盖。生产环境操作前请务必备份原有配置和二进制文件。更稳妥的做法是编译出新二进制后替换旧二进制并平滑重启nginx -s reload可能不够需要先nginx -s stop再启动新进程或使用双进程热升级方案。4. TLS 1.3的Nginx实战配置与优化4.1 基础安全配置模板下面是一个适用于生产环境的Nginx SSL/TLS配置模板它禁用了所有不安全的协议和密码优先使用TLS 1.3和强密码套件。你可以将其放在http块内或具体的server块中。server { listen 443 ssl http2; # 启用HTTP/2与TLS 1.3是绝配 server_name yourdomain.com; # 1. 证书配置你的“SSL证书”实际用于TLS ssl_certificate /path/to/your/fullchain.pem; # 证书链文件 ssl_certificate_key /path/to/your/privkey.pem; # 私钥文件 # 2. 协议配置强制仅使用TLS 1.2和1.3 ssl_protocols TLSv1.2 TLSv1.3; # 3. 密码套件配置核心安全设置 # 这个配置的优先级是优先使用TLS 1.3的套件然后是前向安全的、强加密的TLS 1.2套件。 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; # 4. 优先使用服务器的密码套件顺序 ssl_prefer_server_ciphers on; # 5. 会话复用配置提升性能 ssl_session_timeout 1d; # 会话超时时间 ssl_session_cache shared:SSL:50m; # 共享会话缓存 ssl_session_tickets off; # 对于TLS 1.3建议关闭session tickets使用PSK # 6. 安全增强参数 ssl_dhparam /etc/nginx/ssl/dhparam.pem; # 强DH参数对非TLS 1.3的DHE套件很重要 ssl_ecdh_curve X25519:secp384r1; # 指定优先的椭圆曲线X25519性能更优 # 7. 启用HSTS强制浏览器使用HTTPS谨慎使用一旦启用很难回退 # add_header Strict-Transport-Security “max-age63072000; includeSubDomains; preload” always; # ... 其他location等配置 ... }关键点解析ssl_ciphers字符串以ECDHE开头的套件提供了前向安全性。AES128-GCM和AES256-GCM是高效的认证加密算法。CHACHA20-POLY1305在移动设备没有AES硬件加速上性能更好。最后的DHE-RSA是保底选项兼容一些不支持ECDHE的老旧客户端。ssl_dhparam你需要手动生成这个文件命令是openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096。这能防御Logjam等攻击。注意TLS 1.3不再使用传统的DH参数此设置仅对TLS 1.2及以下版本中使用的DHE密码套件生效。ssl_ecdh_curve X25519这是为TLS 1.3和TLS 1.2的ECDHE密钥交换指定曲线。X25519曲线比传统的P-256secp256r1速度更快、更安全是现代服务器的首选。4.2 TLS 1.3专属优化配置TLS 1.3引入了一些新特性我们可以通过Nginx指令进行优化# 在server或http块中配置 # 1. 为TLS 1.3指定优先的密钥交换群组相当于TLS 1.2的曲线 # 默认情况下OpenSSL会决定顺序。我们可以显式设置优先X25519。 ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256; # 此指令在较新版本Nginx中可用用于排序TLS 1.3密码套件 # 更通用的方式是依赖OpenSSL默认顺序通常已最优。 # 2. 启用0-RTT零往返时间数据谨慎 # TLS 1.3的0-RTT模式可以极大提升重连速度但存在重放攻击风险。 # 对于非等幂操作如POST请求有安全隐患。Nginx默认是关闭的。 # ssl_early_data on; # 如果需要启用在location或server块打开 # 3. 配置会话恢复Session Resumption # TLS 1.3使用PSK预共享密钥进行会话恢复比TLS 1.2的Session ID和Session Tickets更安全。 # 我们之前设置的 ssl_session_tickets off; 和 ssl_session_cache 对此有影响。 # 保持 ssl_session_tickets off; 并启用 ssl_session_cacheNginx会使用更安全的PSK。重要警告关于0-RTT除非你非常清楚0-RTT的重放攻击风险并且你的应用能通过其他方式如重放令牌防御或者仅对GET等等幂请求启用否则在生产环境中不建议开启ssl_early_data on。对于绝大多数网站1-RTT的TLS 1.3握手已经带来了巨大的延迟提升0-RTT的额外收益与风险相比需要仔细权衡。4.3 配置验证与测试方法配置完成后重启Nginx (nginx -s reload或systemctl reload nginx)然后进行测试。使用OpenSSL命令行测试# 测试服务器支持的协议 openssl s_client -connect yourdomain.com:443 -tls1_2 # 测试TLS 1.2 openssl s_client -connect yourdomain.com:443 -tls1_3 # 测试TLS 1.3 # 查看详细的密码套件协商过程 openssl s_client -connect yourdomain.com:443 -ciphersuites ‘TLS_AES_128_GCM_SHA256’ # 测试特定TLS 1.3套件在命令输出中寻找Protocol : TLSv1.3和Cipher : TLS_AES_256_GCM_SHA384之类的信息。使用在线工具测试推荐SSL Labs (SSLLabs.com)提供最全面、最专业的免费测试。输入你的域名它会给出从A到F的评分并详细列出支持的协议、密码套件、密钥强度以及存在的安全问题。这是上线前的必检项。Mozilla SSL Configuration Generator不仅可以测试还能根据你的Nginx/Apache版本生成推荐的配置片段是学习和验证配置的绝佳工具。浏览器开发者工具在Chrome/Firefox的开发者工具中打开“安全”(Security)标签页可以查看当前连接的协议版本和密码套件。一个配置良好的支持TLS 1.3的站点在SSL Labs测试中应该能获得A评级并且明确显示支持TLS 1.3同时已禁用TLS 1.0和1.1。5. TLS 1.3性能碾压性优势的实测对比理论说了那么多TLS 1.3到底比TLS 1.2快多少我们来设计一个简单的对比实验。测试环境服务器单核2G云服务器地域与测试客户端相近。Nginx版本1.22.1编译支持TLS 1.3。测试页面一个简单的“Hello World” HTML页面。测试工具curl(测量握手时间) 和ab(Apache Benchmark测量吞吐量)。测试一握手延迟对比使用curl的-w参数我们测量建立TCP连接后完成TLS握手所花费的时间。# 测量TLS 1.2握手时间强制使用TLS 1.2 time curl -s -o /dev/null -w “tls_handshake: %{time_appconnect}\n” https://yourdomain.com –tlsv1.2 –tls-max 1.2 # 测量TLS 1.3握手时间强制使用TLS 1.3需要curl 7.52.0 time curl -s -o /dev/null -w “tls_handshake: %{time_appconnect}\n” https://yourdomain.com –tlsv1.3典型结果TLS 1.2握手时间约200-300毫秒2次往返 密码学计算。TLS 1.3握手时间约100-150毫秒1次往返 更简化的计算。结论在跨地域或移动网络等高延迟场景下TLS 1.3将握手时间减少了近一半这对于网页首次加载速度特别是HTTP/2/3的多路复用依赖快速建立连接是至关重要的提升。测试二批量请求吞吐量对比使用ab模拟用户快速连续访问多个资源。# 使用TLS 1.2进行1000次请求并发10 ab -n 1000 -c 10 -Z TLSv1.2 https://yourdomain.com/ # 使用TLS 1.3进行1000次请求并发10 ab -n 1000 -c 10 -Z TLSv1.3 https://yourdomain.com/结果分析观察Requests per second(每秒请求数) 和Time per request(每个请求平均时间)。在我的测试中启用TLS 1.3后每秒请求数提升了15%-25%平均请求时间相应下降。这得益于更快的握手和更高效的密码学操作如X25519比P-256更快。测试三模拟弱网络环境使用网络模拟工具如tc增加100ms的延迟重复上述测试。你会发现TLS 1.31-RTT相比TLS 1.22-RTT的延迟优势被进一步放大。因为每增加一次网络往返在高延迟下代价都非常大。实操心得性能提升的感知度取决于你的用户群体和网站类型。对于API服务器、电商网站首页、或大量使用小资源文件的Web应用TLS 1.3带来的延迟降低是实实在在的能直接改善用户体验和业务指标如跳出率、转化率。对于主要服务内网或延迟极低的应用性能提升可能不那么明显但安全性的增强是无价的。6. 常见问题排查与兼容性处理实录即使配置正确在实际部署中也可能遇到各种问题。下面是我在多次部署中遇到的典型问题及解决方法。6.1 客户端不支持TLS 1.3怎么办这是最常见的顾虑。事实上所有主流现代浏览器和操作系统都已支持TLS 1.3。桌面浏览器Chrome ( 70), Firefox ( 63), Safari ( 12.1 on macOS 10.14, iOS 12.2), Edge ( 75) 均默认启用TLS 1.3。移动端Android 10 和 iOS 12.2 的系统浏览器及主要App的网络库均已支持。编程语言/库OpenSSL 1.1.1, Go 1.12, Pythonssl模块 (3.7), Java 11 等都提供了支持。策略你的Nginx配置ssl_protocols TLSv1.2 TLSv1.3;是完美的。支持TLS 1.3的客户端会使用它不支持的客户端会安全地回退到TLS 1.2。你无需为老旧客户端如Windows XP上的IE8开启不安全的TLS 1.0/1.1。如果业务必须支持这些极老的客户端你需要单独为它们设立一个服务入口或使用网关进行协议转换而不是降低主站的安全标准。6.2 配置后SSL Labs评分不升反降或出现警告问题配置了TLS 1.3后SSL Labs测试可能提示 “This server supports TLS 1.3 which is not yet a final version” 旧版测试工具或关于“DH参数强度不足”的警告。排查DH参数确保你已生成并正确配置了4096位的DH参数文件ssl_dhparam。2048位在现代标准下已不够安全。使用openssl dhparam -in /your/path/dhparam.pem -text -noout | head -20检查位数。证书链确保ssl_certificate指向的是包含中间证书的完整链文件通常叫fullchain.pem而不是仅包含站点证书的文件。不完整的链会导致部分客户端如Android旧版无法验证。密码套件顺序SSL Labs可能因为你的ssl_ciphers列表中包含了某些虽然安全但非最优的套件如CBC模式套件而给出提示。可以尝试使用更严格的套件列表例如Mozilla推荐的“Intermediate”或“Modern”配置。6.3 特定客户端连接失败如旧版Java应用、某款IoT设备现象Nginx日志中出现SSL_do_handshake() failed (SSL: error:1417A0C1:SSL routines:tls_post_process_client_hello:no shared cipher)或类似的握手失败错误。原因客户端只支持非常老旧或特定的密码套件而你的安全配置中已将其禁用。解决方案这是安全与兼容性的权衡。首选方案隔离为这些特定的老旧客户端创建一个独立的server块或子域名使用一套更宽松但评估风险后可接受的SSL配置。例如可以临时启用TLSv1并添加一个特定的RSA非前向安全套件。绝对不要在主配置中降低安全标准。诊断工具使用openssl s_client -connect yourdomain.com:443 -ciphers ‘ALL:COMPLEMENTOFALL’可以尝试所有套件来测试兼容性或者使用Wireshark抓包分析Client Hello消息中客户端具体提供了哪些套件。6.4 性能调优ssl_session_cache与ssl_session_timeoutTLS握手是CPU密集型的。对于高并发网站会话复用是提升性能的关键。ssl_session_cache设置为shared:SSL:50m意味着在Worker进程间共享一个50MB大小的缓存。根据你的内存和会话数调整大小。一个会话大约占1KB左右50MB可以缓存约5万个会话。ssl_session_timeout默认是5分钟。设置为1d一天可以让用户在一天内重新访问时享受会话复用的加速。但更长的超时意味着更大的缓存压力和潜在的安全考量虽然会话票据或PSK本身是加密的。监控通过Nginx的stub_status模块或日志观察ssl_session_cache的命中率。如果命中率低可以适当增加缓存大小或超时时间。6.5 关于“创建 TLS 客户端凭据时发生严重错误。内部错误状态为 10013”这个错误常见于Windows环境特别是使用某些开发工具或旧版系统时。它通常与系统SchannelWindows的TLS实现不支持服务器端配置的协议或密码套件有关。服务器端检查你的Nginx配置确保没有仅配置TLS 1.3。如果客户端是旧版Windows如Windows 7 SP1默认不支持TLS 1.2你需要确保ssl_protocols中包含TLSv1.2。Windows 7需要安装特定补丁才能支持TLS 1.2。客户端端更新Windows系统确保已安装所有安全更新。对于开发工具检查其使用的网络库如WinHTTP, .NET Framework版本并确保它们支持TLS 1.2/1.3。有时需要修改注册表或代码来显式启用更强的TLS协议。部署TLS 1.3不是一劳永逸的它是一个持续的过程。定期如每季度用SSL Labs测试你的站点关注安全公告及时调整密码套件列表例如随着时间推移可能会淘汰某些算法是保持前端服务安全、快速的最佳实践。从今天开始检查你的Nginx配置把TLSv1.3加到ssl_protocols里迈出现代安全加密的第一步。