在网站使用 https 问题上,David Yin 一直是鼓励大家一定要上 https 的,并且在过去有建议不要使用 SSL 协议,因为不安全,希望只是用 TLS 系列的协议,包括 TLS 1.0, TLS 1.1, TLS 1.2。
而现在我要更新一下我的建议了,那就是在你的网站配置中,只允许 TLS 1.2,以及更高的 TLS 1.3,如果你的服务器支持的话。
在我的 nginx 配置中,有关的那条现在是这样的:
此处略去相关代码,请查看桌面标准版文章。
因为目前我的服务器对于 TLS 1.3 的支持不够,nginx 虽然已经支持 TLS1.3了,openssl 却是还在草案阶段,连浏览器 Chrome 支持到草案而已。所以 TLS 1.3 还需要等等。
根据 IESG 的新闻稿,TLS 1.3 已经正式被批准了,现在只是等待各大厂商的支持了。
这里我想稍微提一下 TLS 1.3 同 TLS 1.2的区别。
- 新的加密套件只能在TLS 1.3 中使用,旧的加密套件不能用于TLS 1.3 连接;
- 添加了0-RTT 模式,在建立连接时节省了往返时间;
- 废除了静态的 RSA( 不提供前向保密 )密钥交换,基于公钥的密钥交换机制现在可提供前向保密;
- ServerHello 之后的所有握手消息采取了加密操作;
- TLS 1.2 版本的重协商握手机制已被弃用,TLS 1.3 中重新协商变为不可行了;
- 相比过去的的版本,会话恢复在服务端是无状态的,使用了新的 PSK 交换;
- DSA 证书不再允许在 TLS 1.3 中使用;
以上的这些改动,可以避免之前版本出现的缺陷,并且还可以减少TLS握手的时间。TLS 1.3 与以前的版本相比的最大优势是:安全性增强、访问速度更快。
所以在少折腾的原则上,就是在配置文件中只用 TLS 1.2 和 TLS 1.3,在等待新的协议完全支持的前,只是用足够安全的 TLS 1.2。