Nginx升级 TLSv1.3
来自Linux78|wiki
TLS 1.3 优势
TLS 1.3 相对于之前的版本,主要有两大优势:
Enhanced security: 安全性增强 Improved speed:速度提升
1)截止到现在 TLS 1.3 协议仍然处于草案阶段,最新的 RFC 文档是 draft 28,对于大型系统来说,目前并不建议部署,当然对于个人网站来说,可以部署 TLS 1.3 版本 。
2)TLS 1.3 和 TLS 1.2 版本有很大的不同,从协议消息的角度来看,两者是不兼容的,也正因为此,大型系统目前不建议采用 TLS 1.3 版本。
3)Nginx 底层使用的密码库是 OpenSSL,也就是说是否支持 TLS 1.3 版本,取决于 OpenSSL 库。
目前 Nginx 1.13 以上的版本支持 TLS 1.3 版本,而 OpenSSL 1.1.1 版本支持 TLS 1.3 版本,最新的 OpenSSL 1.1.1-pre5 支持 TLS 1.3 draft 26。
编译安装 Nginx
如果原本编译安装过 Nginx,可以输入nginx -V,查看以前的 configure 配置。在后面加上所需参数进行编译。
git clone https://github.com/nginx/nginx.git git clone https://github.com/openssl/openssl.git git clone https://github.com/grahamedgecombe/nginx-ct.git
关键参数:
添加—with-openssl=../openssl-1.1.1来指定 OpenSSL 路径 —add-module=../nginx-ct/ nginx-ct是启用证书透明度(Certificate Transparency)策略的模块。为了启用Certificate Transparency和TLSv1.3,需要额外加入如下编译参数:
--add-module=../nginx-ct/ --with-openssl=../openssl/
配置 Nginx 虚拟主机
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers [TLS13+AESGCM+AES128|TLS13+AESGCM+AES256|TLS13+CHACHA20]: [EECDH+ECDSA+AESGCM+AES128|EECDH+ECDSA+CHACHA20]:EECDH+ECDSA+AESGCM+AES256:EECDH+ECDSA+AES128+SHA:EECDH+ECDSA+AES256+SHA:[EECDH+aRSA+AESGCM+AES128|EECDH+aRSA+CHACHA20]:EECDH+aRSA+AESGCM+AES256:EECDH+aRSA+AES128+SHA:EECDH+aRSA+AES256+SHA:RSA+AES128+SHA:RSA+AES256+SHA:RSA+3DES; ssl_ecdh_curve X25519:P-256:P-384