美文网首页
HTTPS协议传输过程

HTTPS协议传输过程

作者: lsh_01 | 来源:发表于2019-03-07 19:43 被阅读0次

    握手流程

    1. 客户端发起https请求
      客户端告诉服务端支持哪些加密算法。

    2. 服务端响应

      • 选择合适的加密算法(比如:RSA、AES、MD5);
      • CA证书数字签名服务端公钥返回给浏览器。
    3. 客户端验证服务端数字签名,发送秘钥给服务端

      • 验证服务端返回的数字签名
      • 生成一个随机数 a,作为AES加密秘钥,使用服务端公钥a 加密,得到 b
      • 生成握手消息,以 a 为秘钥对其进行AES加密,得到 c
      • 计算握手消息的HASH值,得到 d
      • bcd 发送到服务端。
    4. 服务端确认加密秘钥

      • 使用服务端私钥解密 b ,得到 a
      • a 为秘钥对 c 进行AES解密,得到握手消息;
      • 计算握手消息的HASH,验证其与 d 是否一致;
      • 生成新的握手消息,以 a 为秘钥对其进行AES加密,得到 e
      • 计算新握手消息的HASH值,得到 f
      • ef 返回给浏览器。
    5. 握手过程完成,客户端发送加密数据给服务端

      • a 为秘钥对 e 进行AES解密,得到新握手消息;
      • 计算新握手消息的HASH,验证其与 f 是否一致;
      • 至此,握手过程结束。之后所有的通信数据将以 a 为秘钥进行AES加密后传输。

    客户端验证服务端数字签名的流程

    1. 获取对应CA证书颁发机构的公钥
      根据数字签名信息,获取对应CA证书颁发机构的公钥。
      该公钥是被根证书颁发机构,使用其私钥加密过的。

    2. 解密并获得CA证书颁发机构的公钥
      使用本地根证书公钥,解密并获得CA证书颁发机构的公钥。
      本地根证书公钥是在用户安装操作系统时,由操作系统写入浏览器的。

    3. 解密数字签名,验证服务端公钥
      使用CA证书颁发机构的公钥,解密数字签名,得到服务端公钥的HASH。
      计算服务端公钥的HASH,验证二者是否相同。

    相关文章

      网友评论

          本文标题:HTTPS协议传输过程

          本文链接:https://www.haomeiwen.com/subject/kzphpqtx.html