老青菜

HTTPS

2019-06-08

Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本传输协议。
HTTPS 依靠SSL/TLS协议保证传输安全,SSL/TLS协议工作在应用层 HTTP 和传输层 TCP 之间,简单理解 HTTPS 其实是HTTP+SSL/TLS+TCP

历史背景

SSL(Secure Socket Layer),安全套接层协议,1994年,由NetScape(网景)提出的,基于 HTTP 标准,为建立 TCP 连接提供身份验证,TCP 数据传输提供加解密,保证了连接和传输安全。1996年,SSL3.0发布了。

TLS(Transport Layer Secure),安全传输层协议。1999年,IETF在SSL3.0的基础上,发布了TLS1.0。所以SSL可以算是TLS的前身。
到现在,TLS已经更新到了TLS1.3,TLS1.3改动还挺多的,这里简单介绍一下:

  1. 移除了 ServerKeyExchange、ClientKeyExchange、ChangeCipherSpec,DH协商参数通过 key_share 扩展传递。
  2. 减少握手 RTT,首次会话 1RTT,恢复会话 0RTT,相比 TLS1.2 的 2RTT,效率提升不少。

接下来我们详细看一下SSL/TLS的工作原理。

SSL/TLS

SSL/TLS保证了会话连接和传输的安全性,那么它是如何工作的呢?我们先看看一张图(TLS1.2):

SSL/TLS其实是一个分层协议,包含高低两层协议。高层协议主要包含以下协议:

1. HandShake Protocol

握手协议,负责认证 Client 和 Server 会话,以及协商会话的对称密钥,具体握手流程可以看 这里

2. ChangeCipherSpec

更改密码策略,表示握手结束,Client和Server相互通知对方后续都采用协商的会话密钥和加密算法进行加密通信。不过在TLS1.3版本中已经废弃了,具体可以看 TLS1.3 Major Differences

3. ApplicationData Protocol

数据传输协议,负责把应用层(http)数据传给Record Layer记录层。

4. Alert Protocol

警报消息协议,传达关闭警报消息和错误警报消息。和ApplicationData Protocol一样,警报消息也加密、压缩了。

低层协议是Record Layer(记录协议),为上层协议提供数据分片(or重组)、压缩(or解压缩)、加密(or解密)等等功能,并把数据发给TCP连接。

下一篇文章,我们详细介绍HandShake Protocol(握手协议)是如何保证会话的安全性。

参考链接

SSL3.0
TLS1.0
TLS1.2
TLS1.3
HandShake Protocol
ChangeCipherSpec
ApplicationData Protocol
Alert Protocol
Record Layer

Tags: HTTP
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章