SSL的通信流程|青训营笔记

150 阅读2分钟

SSL的通信流程

如下是RSA套件

image-20241115093526928.png

1. 客户端问候(Client Hello)

客户端向服务器发送一个“问候”消息,内容包括:

  • 支持的SSL/TLS版本(如TLS 1.2或1.3)。
  • 支持的加密算法套件列表(如TLS_RSA_WITH_AES_256_CBC_SHA)。
  • 一个随机数(Client Random),用于后续生成会话密钥。

2. 服务器问候(Server Hello)

服务器回应客户端的问候消息,内容包括:

  • 确定的SSL/TLS版本。
  • 选择的加密算法套件(例如RSA套件)。
  • 一个随机数(Server Random),用于生成会话密钥。
  • 服务器的数字证书。

数字证书包含:

  • 服务器的公钥(RSA公钥)。
  • 证书颁发机构(CA)的签名,用于验证证书的真实性。

3. 证书验证

客户端验证服务器提供的数字证书:

  • 检查证书是否由受信任的CA签发。
  • 确认证书的有效期。
  • 验证服务器公钥是否与证书匹配。

若证书验证失败,SSL握手终止;若成功,继续下一步。


4. 密钥交换(Key Exchange)

客户端生成一个预主密钥(Pre-Master Secret) ,然后使用服务器的RSA公钥加密,并发送给服务器。具体过程:

  1. 客户端生成一个随机的预主密钥。
  2. 使用服务器的RSA公钥对预主密钥进行加密。
  3. 服务器用自己的RSA私钥解密,得到预主密钥。

5. 会话密钥生成

客户端和服务器分别使用以下信息,通过密钥派生算法生成会话密钥(对称加密密钥):

  • Client Random
  • Server Random
  • Pre-Master Secret

因为客户端和服务器都拥有这些信息,它们生成的会话密钥是相同的。


6. 加密通信准备
  • 客户端发送一条消息,表示后续通信将切换到对称加密(如AES)模式,并使用会话密钥对该消息进行加密。
  • 服务器回应一条加密的确认消息。

此时,SSL握手完成,进入安全通信阶段。


7. 加密数据传输

通信双方使用会话密钥对数据进行对称加密和传输。会话期间:

  • 数据完整性由消息认证码(MAC)保障。
  • 机密性由对称加密算法(如AES)保障。

8. 连接终止

当通信结束时,客户端或服务器可发起“关闭通知”消息,终止SSL会话。