为你的网站开启 TLS 1.3

栏目: 服务器 · Nginx · 发布时间: 7年前

内容简介:得益于 Nginx、OpenSSL 新版本的发布,以及 Chrome、Firefox 等一众浏览器的推进,TLS 1.3 已经能很方便地进行部署了。需要注意的是,TLSv1.3 的启用有两个重要条件:由于 Ubuntu 18.04.1 系统的 OpenSSL 版本还停留在 1.1.0,因此我们需要对 nginx 重新编译,截至发稿,本文所用组件版本如下:

得益于 Nginx、OpenSSL 新版本的发布,以及 Chrome、Firefox 等一众浏览器的推进,TLS 1.3 已经能很方便地进行部署了。

实验环境

需要注意的是,TLSv1.3 的启用有两个重要条件:

  • 你的 nginx 必须支持 TLSv1.3,也就是 1.13 以上
  • 你的系统运行 OpenSSL 环境必须大于 1.1.1

由于 Ubuntu 18.04.1 系统的 OpenSSL 版本还停留在 1.1.0,因此我们需要对 nginx 重新编译,截至发稿,本文所用组件版本如下:

Ubuntu 18.04.1 LTS
nginx 1.15.5
OpenSSL 1.1.1 LTS

0. 添加 nginx 官方源

其它文章不同,这里不直接下载 nginx 源码,省去了编译参数的编写

首先信任 nginx pgp

curl https://nginx.org/keys/nginx_signing.key | apt-key add

添加更新源

cat >> /etc/apt/sources.list.d/nginx.list << EOF
deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx
EOF

更新列表

apt update

1. 拉取源码

新建一个目录用于保存源码

mkdir /usr/local/src/nginx && cd /usr/local/src/nginx

拉取 nginx 源码

apt install dpkg-dev -y
apt source nginx

拉取后目录下应该有三个文件,一个文件夹

nginx-1.15.5/
nginx_1.15.5-1~bionic.dsc
nginx_1.15.5-1~bionic.debian.tar.xz
nginx_1.15.5.orig.tar.gz

退到上层目录,拉取 OpenSSL 源码

cd ..
git clone https://github.com/openssl/openssl.git -b OpenSSL_1_1_1-stable

2. 修改编译开关

进入 nginx 目录

cd nginx/nginx-1.15.5/

指定 OpenSSL 运行库

vim debian/rules

如图添加 --with-openssl=/usr/local/src/openssl ,保存即可

为你的网站开启 TLS 1.3

打开 gcc 编译参数文件

vim auto/cc/gcc

注释 CFLAGS="$CFLAGS -Werror"
为你的网站开启 TLS 1.3

3. 编译 deb

执行编译

apt build-dep nginx
dpkg-buildpackage -b

如果没有错误的话,可以在上层目录下看到如下文件

root@dc:/usr/local/src/nginx# ls
nginx-1.15.5
nginx_1.15.5-1~bionic_amd64.buildinfo
nginx-dbg_1.15.5-1~bionic_amd64.deb
nginx_1.15.5-1~bionic_amd64.changes
nginx_1.15.5-1~bionic.debian.tar.xz
nginx_1.15.5-1~bionic_amd64.deb
nginx_1.15.5-1~bionic.dsc
nginx_1.15.5.orig.tar.gz

如果系统之前安装过其它 nginx 的话建议删除

apt remove nginx nginx-common nginx-full -y --allow-change-held-packages

执行安装

dpkg -i nginx_1.15.5-1~bionic_amd64.deb

启动

systemctl start nginx

锁定版本,防止被 apt 升级覆盖安装

apt-mark hold nginx

4. 检查安装情况

运行命令

nginx -V

如果像下图一样,则证明编译安装成功

为你的网站开启 TLS 1.3

5. 开启 TLSv1.3

编辑 /etc/nginx/nginx.conf ,在 http 配置块中添加/修改

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
ssl_prefer_server_ciphers on;
ssl_early_data on;

重启

nginx -t
systemctl reload nginx

至此,TLSv1.3 开启成功。

测试支持

目前 OpenSSL 1.1.1 所支持的为 the final version of TLS 1.3 ,所有草案版本不会被兼容,因此需要升级最新的浏览器,并且打开开关。

  • Chrome: 打开 chrome://flags/#tls13-variant 选择 enabled (Final)
  • Firefox: 打开 about:configsecurity.tls.version.max 改为 4

为你的网站开启 TLS 1.3


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First HTML5 Programming

Head First HTML5 Programming

Eric Freeman、Elisabeth Robson / O'Reilly Media / 2011-10-18 / USD 49.99

What can HTML5 do for you? If you're a web developer looking to use this new version of HTML, you might be wondering how much has really changed. Head First HTML5 Programming introduces the key featur......一起来看看 《Head First HTML5 Programming》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具