https密钥交换过程

关键点

  • 使用 非对称加密 处理用于加密数据的密钥

  • 使用 对称加密 处理具体的数据

图解

流程图地址,按需自取

Client
Client
Server
Server
请求publicKey
请求publicKey
发起请求
发起请求
Time Line
Time Line
处理请求返回公钥:publicKey
处理请求返回公钥:publicKey
返回publicKey
返回publicKey
验证公钥合法性
验证公钥合法性
使用CA验证公钥
使用CA验证公钥
Y
Y
N
N
是否合法
是否合法
结束
结束
生成随机密钥:randomKey
生成随机密钥:randomKey
使用publicKey加密randomKey得到:
encryptRandomKey
使用publicKey加密randomKey…
发送encryptRandomKey
发送encryptRan…
获取randomKey
获取randomKey
使用私钥解密
encryptRandomKey
得到:
randomKey
使用私钥解密encryptRandomKey…
使用randomKey加密要传输的业务数据data
使用randomKey加密要传输的业务数据data
解密数据
解密数据
使用randomKey解密密文,得到明文
使用randomKey解密密文,得到明文
发送data
发送data
后续请求使用randomKey加密/解密数据
后续请求使用randomKey加密/解密数据
Request
Request
后续请求使用randomKey加密/解密数据
后续请求使用randomKey加密/解密数据
Response
Response
Viewer does not support full SVG 1.1

流程说明

1.客户端获取公钥

  • 客户端发送请求,服务端返回公钥

  • 客户端用证书验证公钥,如果合法,继续下一步

2.客户端生成用于加密数据的密钥

  • 客户端生成随机密钥
  • 然后用服务器返回的公钥对这个密钥加密,得到加密后的密钥

3.服务端验证密钥

  • 客户端将加密后的密钥发给服务端
  • 服务端使用私钥解密得到密钥

4.使用密钥加密数据进行传输,使用密钥解密数据得到明文

  • 服务端使用获得的密钥加密数据,发送给客户端
  • 客户端使用密钥解密得到明文。