


















TLS v1.3(Transport Layer Security version 1.3)是传输层安全协议的最新正式版本,用于在计算机网络中提供加密通信。它由 IETF(Internet Engineering Task Force) 于 2018 年 8 月正式发布,是对 TLS v1.2 的重大改进。
由于原有老的nginx版本不支持新的TLSv1.3,需要升级nginx和openssl。
TLS 常用于以下场景:
| 特性 | TLS 1.2 | TLS 1.3 |
|---|---|---|
| 握手轮数 | 至少 2 次往返 | 最多 1 次往返,支持 0-RTT |
| 加密套件 | 多且复杂,包含弱算法 | 简化,仅支持强加密算法 |
| 前向保密 | 可选 | 强制启用 |
| 加密内容 | 一部分未加密 | 握手后所有内容都加密,包括证书 |
| 安全性 | 存在旧漏洞(如 BEAST、POODLE) | 移除已知不安全特性 |
| 性能 | 较慢 | 更快(特别是在移动网络) |
首先,下载 OpenSSL 的源代码,建议下载 1.1.1 或更高版本,因为这些版本支持 TLSv1.3。我这里是放到/usr/local/src
1cd /usr/local/src
2sudo wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
3sudo tar -xvzf openssl-1.1.1l.tar.gz
4cd openssl-1.1.1l
在编译 OpenSSL 时,你需要指定安装目录。通常,OpenSSL 会安装到 /usr/local/ssl,这样不会干扰系统的默认 OpenSSL 版本。当然你也可以选择你自己的喜欢的位置,我这里就安装在/usr/local/ssl
1sudo ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl
将编译并安装 OpenSSL 到指定目录 /usr/local/ssl
1sudo make
2sudo make install
编辑 /etc/profile 或用户的 .bashrc 文件,添加以下内容:
1export PATH=/usr/local/ssl/bin:$PATH
2export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH
3export C_INCLUDE_PATH=/usr/local/ssl/include:$C_INCLUDE_PATH
4export CPLUS_INCLUDE_PATH=/usr/local/ssl/include:$CPLUS_INCLUDE_PATH
加载新的环境变量
1source /etc/profile # 或者 source ~/.bashrc
检查 OpenSSL 安装
下载和解压 Nginx 源代码
1cd /usr/local/src
2sudo wget https://nginx.org/download/nginx-1.29.0.tar.gz
3sudo tar -zxvf nginx-1.29.0.tar.gz
4cd nginx-1.29.0
在编译 Nginx 时,指定 OpenSSL 的安装路径。确保在配置时使用 –with-openssl 参数,指向 OpenSSL 源代码的路径。/usr/local/src/openssl-1.1.1l
1sudo ./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf \
2--http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log \
3--with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module \
4--with-http_image_filter_module --with-http_stub_status_module --with-pcre-jit \
5--with-openssl=/usr/local/src/openssl-1.1.1l --with-debug
注意完成这一步,如果要实现不停机升级nginx千万不要执行
make install
1which nginx
2cd /usr/sbin
3sudo cp nginx nginx.bak
1cd /usr/local/src/nginx-1.29.0
2make
3cp objs/nginx /usr/sbin/nginx
1nginx -t
2nginx -s reload
3nginx -V
打开 Nginx 配置文件 /etc/nginx/nginx.conf 或你相关的站点配置文件,确保启用了 TLSv1.3。
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_256_CCM_SHA384';
ssl_prefer_server_ciphers off;
# Other server configurations...
}
使用 openssl s_client 来验证是否启用了 TLSv1.3
1openssl s_client -connect example.com:443 -tls1_3
或者浏览器访问
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。