Http和Https和SSL工作原理

相关概念

Http:超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上,是Web协议族中非常重要的一个协议。协议版本包含Http1.0Http1.1Http2.0.

Https:HTTPS (Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

SSL:安全套接层(Secure Socket Layer,SSL),是网景公司(Netscape)设计的主要用于Web的安全传输协议,这种协议在Web上获得了广泛的应用。版本包含 SSL1.0(未发布)、SSL2.0(于2011年废弃)、SSL3.0(于2015年废弃)。

TSL:传输层安全协议(Transport Layer Security (TLS) Protocol)是 互联网工程任务组(IETF)组织将SSL标准化后的发布的协议。版本包含 TLS1.0(于2021年弃用)、TLS1.1(于2021年弃用)、TLS1.2、TLS1.3。

相关性

TLS

TLS 包含握手协议(The Handshake Protocol)和记录协议(The Record Protocol)。

记录层协议(The Record Layer Protocol)

记录层接收来自TCP、UDP等更底层的数据。它被划change_cipher_specalerthandshakeapplication_data 四种数据类型。

握手协议(The Handshake Protocol)

握手协议比记录层协议更高,对应记录层协议handshake类型的数据。

主要作用

  • 密钥套件的协商
  • 服务器和客户端(可选)的身份验证
  • 会话密钥信息交互

握手协议包含以下步骤

  1. Client发送ClientHello,包含协议版本,随机数(RN),所有支持的密码套件(CipherSuites)。
  2. Server回应ServerHello ,包含协议版本,随机数,选择的密钥套件,会话ID。
  3. Server发送Certificate消息(可选)
  4. Server发送 ServerKeyExchange消息(可选)
  5. Server发送 CertificateRequest消息(可选)
  6. Server发送ServerHelloDone消息
  7. Client 发送 Certificate消息(可选)
  8. Client 发送 ClientKeyExchange消息
  9. Client 发送 CertificateVerify消息(可选)
  10. Client 发送 ChangeCipherSpec
  11. Client 发送 Finished消息
  12. Server发送 ChangeCipherSpec
  13. Server 发送 Finished消息
  14. Server 与Client 采用加密通信,发送application_data数据

密码套件(The Cipher Suite)

加密套件是一个算法集合,通常包含秘钥交换算法、数据加密算法、信息校验算法。格式为:

TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlgSSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg

秘钥交换算法(KeyExchangeAlg):用于两个设备间秘钥的交换

数据加密算法(CipherAlg):用于传输数据的加密

信息校验算法(MacAlg):用于校验传输信息的完整性