开启极速 HTTPS 体验

请注意,本文编写于 341 天前,最后修改于 66 天前,其中某些信息可能已经过时。

0x01 前言

如果说 HTTP/2 是当前互联网 Web 发展的讨论热点之一,那么下一个热点应该就是 TLS 1.3 了。
上次加密协议更新至今已有八年多,TLS 1.3的最终版本现已于2018年8月发布。


0x02 当前的TLS协议存在问题

老版本的SSL协议被公认在完整性校验、密钥协商过程中有重大缺陷,因此,2011年与2015年IETF小组相继声明禁止使用SSL 2.0、3.0。
TLS协议针对此前披露的漏洞做了相应的处理,但是因为其复杂性,还没有一个版本能真正保证绝对的安全。

目前最新版本的TLS 1.2发布距今已有九年时间,在此期间,许多SSL/TLS协议的新漏洞被发现,比如针对其压缩机制的CRIME漏洞,针对CBC块加密模式的BEAST漏洞(主要是针对SSL 3.0和TLS 1.0),早已不再是当初设计者认为的那么安全,人们迫切需要新的协议将其代替。


0x03 TLS 1.3有哪些变化?

  • TLS1.3 大幅提高安全性,还简化了握手过程,使第一次握手时只需要一个RTT,并在第二次访问时提供了 0-RTT 模式,提高了性能降低服务器压力。
  • 支持0-RTT数据传输
  • 废弃了3DES、RC4、AES-CBC等加密组件。废弃了SHA1、MD5等哈希算法。
  • 不再允许对加密报文进行压缩、不再允许双方发起重协商,密钥的改变不再需要发送change_cipher_spec报文给对方。
  • 握手阶段的报文可见明文大大减少。

0x04 TLS 1.3完整握手工作流

  • +表示该报文中值得注意的extension
  • *表示该内容也可能不被发送
  • {} 表示该内容使用handshake_key加密
  • [] 表示该内容使用application_key加密

0x05 速度优势

在Web性能方面,TLS和加密连接总是增加了一些开销。HTTP / 2肯定有助于解决这个问题,但TLS 1.3通过TLS错误启动和零往返时间(0-RTT)等功能帮助加速加密连接。

简单地说,使用TLS 1.2,需要两次往返才能完成TLS handshake。使用1.3时,它只需要一次往返, 从而将加密延迟减少一半。这有助于这些加密连接感觉比以前更快一点。


0x06 如何为自己站点启用TLS 1.3

演示环境:

  • 面板:宝塔面板 6.8.3
  • 系统:Centos 7.5
  • Nginx:1.15.6

修改网站配置文件

//替换
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
//替换
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
//增加
add_header Strict-Transport-Security "max-age=31536000";

0x07 开启成功

TIM图片20181216133616.png
TIM图片20181216133616.png


0x08 总结

TLS 1.3使用了复杂的密钥导出过程,增强了最终使用的密钥的安全性。同时简化了所使用的加密算法,废弃了RC4、3DES、MD5、SHA1、AES-CBC等加密算法,删除了压缩、重协商等具有漏洞的机制,大大精简了协议。
因此,TLS 1.3如果能够得到普及,网络数据的传递将会变得更加安全、隐秘,TLS 1.3的推广需要每一位开发者、运营者的认可和支持。

目前TLS 1.3虽然还在草案阶段,但是其基本原理和思想已经应用在了实际生活中,chrome等浏览器都已准备好了对其的支持,期待TLS 1.3正式成为一个协议规范的那一天。

添加新评论

已有 23 条评论

说起来最引起舒适的特性还是可选的ESNI,在Client Hello中的SNI域名不再使用明文传输(某审查方法失效QAQ

Zero Zero 回复 @秋のかえで
0 0

QAQ

好极了。

哈哈哈哈

套了CDN光搞这些不会生效吧!

支持TLSv1.3的CDN国内目前好像只有又拍云可以,如果cdn不支持的话加了也没有用的。

替换添加报错是证书问题吗

Nginx什么版本

badun badun 回复 @Zero
0 0

1.14.2

要1.15以上

badun badun 回复 @Zero
0 0

貌似可以了哪里可以测试

F12 Security

badun badun 回复 @Zero
0 0

还是tls1.2

你Nginx升到1.15啊

badun badun 回复 @Zero
0 0

badun badun 回复 @Zero
0 0

badun badun 回复 @Zero
0 0

已成功

下一步就是加入HSTS了

HSTS开启了啊 配置文件最后一行就是

加入HSTS Preload List