让Nginx快速支持TLS1.3协议

最近在看一些 TLS 协议 1.3 版本的相关知识,所以想分享一些信息,本文是第一篇,没有太多的理论细节,主要说下如何在 Nginx 上快速部署一个支持 TLS 1.3 协议版本的网站。

几个基本观点需要牢记。

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。

这篇文章运行环境如下:

Ubuntu 14.04.5 LTS 系统

gcc version 4.8.4

Nginx nginx1.13.5

openssl1.1.1

如果大家在具体安装的时候,遇到各类问题,可能和软件版本、系统环境有关,需要查看手册或者在线 Google。

安装 OpenSSL

了解 TLS 1.3 版本,最好的工具就是 OpenSSL,所以第一步就是安装 OpenSSL 密码库和命令行工具。

运行如下命令:

在这个版本中,默认已经启用 TLS 1.3 ,所以不加 enable-tls1_3 参数也可以

OpenSSL 命令行工具和各类包、证书文件都保存在 /usr/local/openssl1.1.1 目录下。

该版本对应的 TLS 1.3 版本是 draft 23。

安装完成后,可以使用命令行工具了解相关 TLS 1.3 信息。

比如运行下列命令,了解该版本对应的所有密码套件:

可以看出 TLS 1.3 版本支持的密码套件进一步减少(增强了安全性)。

安装 Nginx

Nginx 支持 TLS 1.3 版本,指定 OpenSSL 库即可,运行命令如下:

—with-openssl-opt 参数主要是为了配置 OpenSSL

Nginx 配置 TLS 1.3 版本

nginx.conf 文件配置如下:

关于如何申请证书,可以参考我原来的文章。

配置 TLS 1.3 版本很简单,ssl_protocols 增加 TLSv1.3 即可。

运行如下命令启动 Nginx:

测试 TLS 1.3

使用三种方式测试网站是否支持 TLS 1.3 版本。

1)OpenSSL 命令行

运行下列命令:

可见 TLSv1.3 已经成功支持。

2)Chrome

目前主流的浏览器都支持 TLS 1.3 版本,具体见下图:

Chrome 从 62 版本默认开启 TLS 1.3 的支持,如果是 62 以下的版本,可以进行下列的配置。

(1)工具栏上打开 chrome://flags/

(2)启用 TLS 1.3

需要注意的是,如果服务器端支持的 draft 版本和浏览器支持的 draft 版本不一致,那么 HTTPS 网站将不能访问。

(3)重新启动浏览器

然后打开浏览器,对 https://www.simplehttps.com 进行测试。

3)Firefox

Firefox 从 47 版本默认开启 TLS 1.3 的支持,如果是 47 以下的版本,可以进行下列的配置。

(1)工具栏上打开 about:config

(3)重新启动浏览器

然后打开浏览器,对 https://www.simplehttps.com 进行测试。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180418G1LLTT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券