测试了一下 TLS 1.3 以及 Google 的 Brotli 压缩算法

在昨天简单介绍了 TLS 的变化和趋势之后,特别想看看基于目前的都是预发布版本或者测试版的情况下,TLS 1.3 的支持。
于是用了 Vultr 的 IPv6 only 的最低 2.5美元每月的 VPS,用于测试。该计划是 1vCPU,512MB 内存,20GB SSD 磁盘空间。

用的是位于Seattle,西雅图机房的 VPS,选择安装的是 Ubuntu 18.04 x64 版本系统。
编译 nginx 以及 openssl 有关的,基本上按照 Jerry Qu 的文章来操作。有区别的就是一个是我用了 nginx 1.14.0 版本,以及 openssl 最新的 1.1.1 pre9-dev 版本。
目前 openssl 的支持 TLS 1.3 草案,支持到 draft-26, draft-27, draft-28。
加密套件是:

编译的过程没有什么问题,完成后,加上 Let's Encrypt 的证书。

于是我就测试了一下在 Chrome 正式版(当前是 v67),被降级到 TLS 1.2 方式。

在 Chrome Dev版 (当前是 v69),可以看到是 TLS 1.3,用 AES_256_GCM 加密。

在 Firefox 正式版(当前是 v61.0.1),也是 TLS1.3,显示用 TLS_AES_256_GCM_SHA384 加密。

在Opera 正式版 (当前是 v54),显示 TLS 1.2,估计因为它也是用 Chromium 核心的原因。

于是我查了一下 Chrome 67,目前支持到 TLS Draft 23。而Chrome 69,已经支持 TLS 1.3 Draft-28了。

第二个就是因为在编译 nginx 的时候,加入了 Brotli 算法,如果用支持此压缩算法的浏览器,返回的内容就是用它来压缩的,的确可以看到压缩率比 gzip 高,比如一个 phpinfo 的页面,当 html 内容的大小为 88.7K,gzip 压缩方式返回大小为 23.38K,如果是 Brotli 压缩方式返回的大小是 21.39K。

两者相比, Brotli 比 gzip 少9%。

在返回的文件头会包含 br 作为 content-encoding。

content-encoding:br

目前主流浏览器都已经支持 Brotli 压缩算法,包括 Chrome,Edge,Firefox,Opera,Safari。

而 Web 服务器大部分都可以通过扩展或者社区来获得支持。

通过这些测试和资料查找,可以看出 TLS 1.3 很快就进入正式版了,并且被各大浏览器所支持。如果不是太着急的话可能等个一个月就会有正式版,那样就直接升级系统和浏览器就可以了。当然要记得修改 nginx 的配置文件。如果想先人一步,率先支持 TLS 1.3,那么就要自己编译相关的软件了,另外记得要保留 TLS 1.2 的支持,否则可能会遇到无合适的加密套件而无法连接的情况。