HTTPS

288 阅读3分钟

定义

HTTP over SSL 的简称,即工作在 SSL (或 TLS)上的 HTTP。说白了就是加密通信 的 HTTP。

HTTP Secure /HTTP over SSL / HTTP over TLS

SSL

Secure Socket Layer -> TLS Transport Layer Security

定义:在HTTP之下增加的一个安全层,位于HTTP和TCP之间

  • HTTPS的底层支持就是SSL,一开始他们的关系类似于http和html类似,他们的关系是共生的
  • 后来改名TLS

本质:

在客户端和服务器之间用非对称加密协商出一套对称密钥,每次发送信息之前将内容加密,收到之后解密,达到内容的加密传输

HTTPS并不比HTTP高级,也不是HTTP衍生的协议,只是对HTTP进行了包装,加了一个安全的罩子,打开包装,里面就是HTTP

HTTPS并不是协议,也没有版本号,HTTP是协议

为什么不直接用非对称加密?

非对称加密由于使用了复杂了数学原理,因此计算相当复杂,如果完全使用非对称 加密来加密通信内容,会严重影响网络通信的性能

HTTPS连接

  • 客户端请求建立TLS连接
  • 服务器发回证书
  • 客户端验证服务器证书
  • 客户端信任服务后,和服务器协商对称秘钥
  • 使用对称秘钥开始通信

1.Client Hello

会发送一个单字节信息,附加上一些可选内容给服务器

  • 可选的TLS版本
  • 可选的加密套件
    • 可选的对称加密算法
    • 可选的非对称加密算法
    • 可选的hash算法
  • 客户端随机数

如下图所示:

2.Server Hello

与客户端类似,服务器会发送一个单字节信息及一些可选内容给客户端,同时会保留自己的服务器随机数

  • 可选的TLS版本
  • 可选的加密套件
    • 可选的对称加密算法
    • 可选的非对称加密算法
    • 可选的hash算法
  • 服务器随机数

如下图所示:

3.服务器证书 信任建立

服务器发送证书给客户端,同时客户端进行验证,证书中包含了

  • 服务器信息
    • 服务器公钥(其实是个数据)
    • 服务器主机名
    • 服务器地区
  • 服务器证书的签名
  • 证书签发机构
    • 证书签发机构的公钥:即用于验证这个「公钥签名」的另一个公钥
    • 证书签发机构的名字
    • 证书签发机构的地区
    • 证书签发机构的公钥的签名
  • 根证书机构
    • 根证书机构的公钥(不会无限递归,因为其可信度已经很高,一般都是设备的根证书,比如mac系统的根证书)
      • 3
    • 根证书机构的名字
    • 根证书机构的地区

4.Pre-master Screct

客户端发送Pre-master Screct数据,是由客户端生成的一个加密随机数

通信双方都持有Pre-master Screct之后,会通过①客户端随机数②服务器随机数③Pre-master Screct共同计算出->Master Screct

然后Master Screct数据生成以下信息(一共6个,以下4个是主要信息),由此就能实现对称加密的加密通信

  • 客户端加密密钥
  • 服务端加密密钥
  • 客户端MAC secret
  • 服务端MAC secret
    • HMAC(hash-based message authenticate code ):基于 hash 的消息验证码,是 安全通信中必要的组成部件。
    • 主要是 防止消息被篡改,和对称加密一起保护数据通信的完整性。

5.客户端通知:将使用加密通信

6.客户端发送:Finished

包含前面5步的信息合在一起进行HMAC之后的信息

7.服务器通知:将使用加密通信

8.服务器发送:Finished

综合前面信息进行发送