TLS1.3 更新 Final
由于 Github 没有正式的 Draft 新分支(18/19 已经是很久以前的事了),所以就直接拉主分支了,哔哩萌会不断跟进。
由于 Github 没有正式的 Draft 新分支(18/19 已经是很久以前的事了),所以就直接拉主分支了,哔哩萌会不断跟进。
- OpenSSL 进度:Final (已完成)
- Firefox Nightly 进度:NSS TLS 1.3 Demo Server (已完成)
编译
主要是 Nginx 1.13.11 已修复此问题。pthread_atfork
报错,(见 Issue 3884), 暂时的解决办法:vi ./objs/Makefile
,搜索 -ldl -lz \
,删除此行前面的 -lpthread
,并在 \ 前添加 -lpthread
,如 -ldl -lz -lpthread \
,之后顺利编译。
testssl 测试
工具链接:https://testssl.sh/
git clone --depth 1 https://github.com/drwetter/testssl.sh.git
cd testssl.sh
./testssl.sh -p https://example.com/
测试结果
SSLv2 not offered (OK)
SSLv3 not offered (OK)
TLS 1 not offered
TLS 1.1 not offered
TLS 1.2 offered (OK)
TLS 1.3 offered (OK): final
SPDY/NPN h2, http/1.1 (advertised)
HTTP2/ALPN h2, http/1.1 (offered)
注意
OpenSSL 1.1.1 近期更新后 TLSv1.3 ciphersuite 须与 1.1/1.2 分开配置(详见:#191),受制于 Nginx 暂无支持计划( Nginx 称 OpenSSL 团队对于解决意外禁用 TLS 1.3 密码引发的问题未有长远的、明确的方案。详见:#1529)。
因此,短期内 Nginx 使用者将无法调整密码套件优先顺序,如把 CHACHA20-POLY1305-SHA256
放到首位。Apache 计划新增 SSLCipherSuiteV1_3
。
现在默认的 TLSv1.3 密码套件是:
TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
0-RTT 已实现
从下图得知 Nginx 还未实现 0-RTT 。哔哩萌已支持 0-RTT
Nginx 加入下列配置。
ssl_early_data on
重放攻击
0-RTT 据说有重放攻击的风险,如果启用了 TLS 1.3 0-RTT,最好就告知后端,后端就可以采取措施避免重放攻击造成损害。(RFC-8470 “推荐”)对于使用 Nginx 反代的案例,可以通过 Early-Data 头告知后端服务器。
proxy_set_header Early-Data $ssl_early_data;