HTTPS挥手
HTTPS 断开连接:TLS close_notify 的意义,以及与 TCP 四次挥手的关系。
#type / concept
#status / growing
#resource / https
#tech / network
#protocol / https
[!info] related notes
- 所属 MOC: http-and-frontend-networking-moc
- 概念: https
- 握手: https四次握手
HTTPS挥手
很多时候大家只关注 TCP 四次挥手,却忽略了 TLS 层面也有自己的安全断开机制。
HTTPS 的挥手(断开),实际上包含两个层面:
-
TLS 层面的挥手(防截断攻击): 在正式关闭底层的 TCP 连接之前,主动断开方(通常是客户端)必须在加密通道里发送一个特殊的 TLS 警告消息:
close_notify。- 为什么要有这一步? 如果没有这个消息,黑客可以通过在半路强行伪造 TCP 的 RST 或 FIN 包,让通信双方以为传输正常结束了,从而把未传完的数据“截断”(这就是著名的截断攻击 Truncation Attack)。有了
close_notify,双方就明确知道加密会话是安全、完整结束的,而不是被恶意阻断的。
- 为什么要有这一步? 如果没有这个消息,黑客可以通过在半路强行伪造 TCP 的 RST 或 FIN 包,让通信双方以为传输正常结束了,从而把未传完的数据“截断”(这就是著名的截断攻击 Truncation Attack)。有了
-
TCP 层面的挥手: 在发送和确认了 TLS 的
close_notify之后,双方才会降级到传输层,正常执行我们上一题聊过的TCP 四次挥手,最终释放端口和内存资源。