TLS 1.3 正式版来临前的实践 💡

Firefox 和 Chrome 都已支持 TLS1.3 加密协议(可能需要手动开启),不过目前 TLS1.3 还在草案阶段,但已经是到了最后的阶段。

TLS1.3 大幅度的改动了加密套件。所以更安全

删除了[1]

  • RSA 密钥传输——不支持前向安全性
  • CBC 模式密码——易受 BEAST 和 Lucky 13 攻击
  • RC4 流密码——在HTTPS中使用并不安全
  • SHA-1 哈希函数——已被证实可被破解
  • 任意 Diffie-Hellman组——CVE-2016-0701漏洞
  • 输出密码——易受 FREAK 和 LogJam 攻击

与 TLS1.2 最大的区别是 TLS1.3 握手时的区别,在 TLS1.3 中提供了 1-RTT 的握手机制:将 Key Share 的过程提前到 Client Hello ,同时大幅度简化握手过程,使第一次握手时只需要一个RTT,并且在第二次访问时提供了 0-RTT 模式。所以 TLS 1.3 更快

TLS 1.3即将转正,所以我决定提前试试看有没有坑,尝试过后发现过程没啥好说的,基本只需要注意以下几个地方。

  1. 编译Nginx时,记得加上--with-openssl-opt=enable-tls1_3(不用了)
  2. ssl_protocols 只需要设置 TLSv1.2 直接加上 TLSv1.3 (nginx 1.13.0 已正式支持)
  3. ssl_ciphers 设置为
TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-256-GCM-SHA384:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

TLS 1.3-Demo,只有浏览器开启 TLS 1.3 才能访问哦

哔哩萌已启用 TLS1.3。

TLS 1.3

貌似到现在为止还没有工具可以测试 TLS1.3,包括 SSLLab SSLLab 支持了。


  1. 🔗 Introducing TLS 1.3 ↩︎