SSL的通信流程
如下是RSA套件
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公钥加密,并发送给服务器。具体过程:
- 客户端生成一个随机的预主密钥。
- 使用服务器的RSA公钥对预主密钥进行加密。
- 服务器用自己的RSA私钥解密,得到预主密钥。
5. 会话密钥生成
客户端和服务器分别使用以下信息,通过密钥派生算法生成会话密钥(对称加密密钥):
- Client Random。
- Server Random。
- Pre-Master Secret。
因为客户端和服务器都拥有这些信息,它们生成的会话密钥是相同的。
6. 加密通信准备
- 客户端发送一条消息,表示后续通信将切换到对称加密(如AES)模式,并使用会话密钥对该消息进行加密。
- 服务器回应一条加密的确认消息。
此时,SSL握手完成,进入安全通信阶段。
7. 加密数据传输
通信双方使用会话密钥对数据进行对称加密和传输。会话期间:
- 数据完整性由消息认证码(MAC)保障。
- 机密性由对称加密算法(如AES)保障。
8. 连接终止
当通信结束时,客户端或服务器可发起“关闭通知”消息,终止SSL会话。