https通信过程

  1. clientHello,客户端向服务端发送 version,client random,sessionID,cipher suites(客户端支持的密码套件组成的列表),compression(客户端支持的压缩方法),extensions

  2. serverhello 服务端选择的参数传递给客户端

  3. certificate 服务端发送证书 (网站信息[信息 + 摘要 + 散列算法+ 公钥] + 数字签名) 给客户端,服务端需要保证它发送的证书与选择的算法套件一致。证书是CA机构通过服务端提供的信息生成的。私钥只保存在服务端,公钥可以发送给所有的客户端。

  4. serverkeyexchange 服务端向客户端发送 server random

  5. serverhellodone 服务端将握手消息发送完毕,等待客户端发送消息。

  6. clientkeyexchange 客户端向服务端发送使用服务端公钥加密的 premaster secret

  7. changeciperspec 发送端已取得用以生产连接参数的足够信息。

最后,生成共享密钥,客户端和服务端均使用client random、server random、premaster secret使用相同的算法生成相同的共享密钥

数字签名

数字签名是一种密码学方案,用于验证一条消息的真实性。使用私钥对消息进行签名,并使用对应公钥进行验证。验证流程:

  • 计算希望签名的文档的散列
  • 对结果散列和一些额外的元数据(如使用的散列算法)进行编码
  • 使用私钥加密编码过的数据,结果就是签名,可以追加到文档中作为身份验证的依据
  • 接收方接收文档并使用相同的散列算法独立计算文档散列。使用本地公钥对消息进行解密,将散列码解出来,再确认使用的散列算法是否正确,解密出的散列是否与本地计算的相同。这个方案的强度取决于加密、散列以及编码组件的各自强度。

你可能感兴趣的:(https通信过程)