HTTPS加密原理和证书及SSL/TLS握手过程

  • HTTPS概述:(From Wikipedia)

    安全超文本传输​​协议HTTPS ) 是超文本传输​​协议(HTTP) 的扩展。它用于计算机网络上的安全通信,并在 Internet 上广泛使用。在 HTTPS 中,通信协议使用传输层安全性(TLS) 或以前的安全套接字层 (SSL) 进行加密。因此,该协议也称为HTTP over TLSHTTP over SSL

    HTTPS 的主要动机是对访问的网站进行身份验证,以及在传输过程中保护交换数据的隐私完整性。它可以防止中间人攻击,客户端和服务器之间的双向通信加密可以防止通信被窃听篡改。HTTPS 的身份验证方面需要受信任的第三方签署服务器端数字证书

  • HTTP加强安全性 -> HTTPS    S: SSL/TLS     SSL 是 TSL 前身
  • 对称加密:私钥加密

    非对称加密: 私钥 + 公钥加密

  • TLS握手:

   TCP三次握手后:客户端发送Client Hello给服务端,告诉服务端支持TLS的version,以及16个Ciper Suites加密套件(不同的加密算法组合),生成一个随机数Random发给服务端;

  服务端收到后发送Server Hello给客户端,告诉服务端确认支持的TLS version,以及选择的加密套件,也生成一个随机数发给客户端;

  服务器会再发送一个响应来出示自己的证书,这样浏览器就可以根据对照自己的整数信任列表来确认这个服务器是否可信;发了证书,就有公钥,于是Server Key Exchange这里服务器就把公钥发给客户端;

  服务器还要告诉客户端:我发送完了,也就是Server Hello Done;

  以上为打招呼过程,这些请求和响应依然未进行加密。现在轮到客户端来处理这些响应:

  Client Key Exchange: 此时客户端生成第3个随机数(预主密钥),这个会用当当收到的公钥进行加密,并把加密后随机数发送给服务器(Pubkey显示的随机数);

  Change Ciper Spec: 告诉服务器,以后的数据就用商议好的算法和密钥来加密;

  Encrypted Handshake Message: 便是客户端这边的TLS协商已经没问题了,开始加密。服务器也会发送这个消息,表示TLS握手成功,可以给数据加密进行交换。

posted @ 2022-12-22 18:00  UpZhou  阅读(120)  评论(0编辑  收藏  举报