HTTP深入浅出之HTTPS原理以及握手细节

Posted by weite122 on 2019-03-13

HTTPS的原理是什么?

  • HTTPS 就是HTTP+TLS/SSL.HTTP是超文本传输协议,SLL/TLS是加密协议,它的思路就是公钥加密法。客户端先向服务器获取公钥,然后用公钥加密信息,服务器收到信息后,用自己的私钥进行解密。这里存在两个问题,一是如何保证公钥不被篡改,可以将公钥放在数字证书中。二是公钥加密计算量太大,每次对话
  • 客户端和服务端都生成一个”对话密钥“,用他来加密信息。由于对话秘钥是对称加密,所以加密速度很快。
  • 所以SSL/TLS协议基本过程是客户端向服务器索要并验证公钥,双方协商生成”对话密钥“,双方采用密钥进行加密。
  1. 客户端发出请求:

    1
    2
    3
    4
    1. 支持的协议版本,比如TLS 1.0
    2. 一个客户端生成的随机数
    3. 支持的加密算法 例如RSA
    4. 支持的压缩方法
  2. 服务器回应

    1
    2
    3
    4
    1. 确认协议版本
    2. 一个服务器生成的随机数
    3. 确认加密算法
    4. 服务器证书
  3. 客户端回应

    1
    2
    3
    1. 一个随机数,该数字用服务器公钥加密
    2. 编码改变通知,以后都用双方协定的公共密钥加密解密
    3. 客户端握手结束通知。
  4. 服务器最后回应

    1
    2
    1. 编码改变通知
    2. 服务器握手结束通知

浅析HTTP和HTTPS的三次握手有什么区别?

  1. HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
  2. 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  3. HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  4. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  5. HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。