HTTPS如何握手 别再只会说“HTTPS更安全”了,今天我把TLS握手给你讲透 你有没有被面试官问过这个问题:“HTTPS和HTTP有什么区别?” 90%的程序员会条件反射地回答:“HTTPS更安全,数据是加密的。” 然后面试官继续问:“那TLS握手具体是怎么样的?为什么有人说1.2和1.3握手差别巨大?” 场面一度非常尴尬。 今天,我们用最通俗的语言,把HTTPS握手的里里外外说清楚。不贴代码,只说干货。 握手到底是什么? 想象一下,两个人第一次见面,要先确认对方身份、约定好用什么语言交流、再商量一个暗号——这就是HTTPS握手在做的事。 TLS 1.2时代,握手需要两次往返:客户端先发“你好”,服务器回“你好”并附上证书,客户端验证身份后生成密钥,再告诉服务器。一来一回,两个RTT才能开始传输数据。 TLS 1.3直接把往返砍到一次。客户端在第一个消息里就把支持的加密算法和密钥生成参数一股脑发过去,服务器收到后当场算出密钥,直接回复加密数据。 这就好比以前你要先发短信问“在吗?”,等对方回“在的”,你再问“能语音吗?”,对方说“能”。现在你直接拨过去,对方秒接。 速度差距肉眼可见。 所以TLS 1.3强在哪? 第一,握手加速是基操。从两次往返变一次,延迟直接砍半。对于移动端或弱网环境,就是“能打开”和“一直在转圈”的区别。 第二,它把那些过时的加密算法全砍了。MD5、SHA-1、RC4、3DES,这些有已知漏洞的老古董被彻底移除。标配的AEAD认证加密,能同时保证数据不会被偷看,也不会被篡改——篡改这事在1.2里是可选功能,现在直接写进标准。 第三,前向安全不再是选项,而是强制。什么意思?就算黑客今天偷走了服务器的私钥,过去截获的所有加密会话依然解不开。因为每个会话的密钥都是临时生成的,跟服务器私钥没关系。 和HTTP/2、HTTP/3什么关系? 很多人搞混这件事。HTTP/2和HTTP/3是应用层协议,TLS是传输层安全协议,各司其职。 HTTP/2多路复用,但底层通常还是TCP+TLS 1.2或1.3。HTTP/3直接换成了QUIC——这个QUIC内部已经内置了TLS 1.3的握手。所以说,HTTP/3更快,根本原因之一是它的TLS握手和连接建立合并成了一个过程。 作为程序员,你该怎么用? 启用TLS 1.3不需要你改代码。升级你的Nginx到1.13+、Apache到2.4
00:00 / 04:28
连播
清屏
智能
倍速
点赞8
00:00 / 06:56
连播
清屏
智能
倍速
点赞190
00:00 / 01:32
连播
清屏
智能
倍速
点赞6
00:00 / 01:49
连播
清屏
智能
倍速
点赞39
00:00 / 01:20
连播
清屏
智能
倍速
点赞2111
00:00 / 00:19
连播
清屏
智能
倍速
点赞NaN
00:00 / 05:44
连播
清屏
智能
倍速
点赞2210
00:00 / 02:00
连播
清屏
智能
倍速
点赞0
00:00 / 00:57
连播
清屏
智能
倍速
点赞1638
00:00 / 01:01
连播
清屏
智能
倍速
点赞4