简单理解HTTP和HTTPS的区别

一、定义

HTTP:超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。

1
2
简单的说:
HTTP是一种传输协议

HTTPS:超文本传输安全协议,是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

1
2
简单的说:
HTTPS协议=HTTP协议+SSL协议/TSL协议

二、区别

  1. HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

  2. 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

  3. HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 TSL 握手需要的 9 个包,所以一共是 12 个包。

  4. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

  5. HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

1
2
3
简单的说:
HTTP是明文传输,黑客可以知道你和服务器之间的内容
HTTPS是HTTP经过TSL加密后进行的加密传输,黑客无法获取你和服务器之间的内容

三、SSL\TSL加密

目前SSL已经不用了,现在几乎所有的浏览器都是使用的TSL加密。该加密过程可以通过一张图片来解释

  1. 客户端发送Client Hello、支持的TLS版本、支持的加密套件(不同的对称加密算法组合)、第一个随机数
  2. 服务端单发送Server Hello、确认支持的TLS版本、确认选择的加密套件、第二个随机数
  3. 服务端发送CA证书(浏览器会对照自己的证书信任列表来确认这个服务器是否可信)、服务器公钥、Server Hello Done(服务端发送完了)。这里服务器也可能发出请求要客户端证书和公钥,比如登录网站的时候
  4. 客户端发送预主密钥(经过公钥加密后的第三个随机数)、Change Ciper Spec(往后的数据通过商量好的算法加密)、Encrypted Hadshake Message(TLS协商没有问题,加密开始)
  5. 服务端发送Encrypted Hadshake Message

TSL握手

图片来源于技术蛋老师

1
2
总而言之:
产生的三个随机数最终可以获得一个会话密钥,即后续用到的对称加密方法。

四、总结

如今HTTPS已成为主流,但是HTTPS中的加密的非对称加密(其实用的也就是RSA加密)非常复杂,运输效率极低。所以这里的RSA加密只是用于身份验证,而后续加密步骤都是通过三个随机数来确认的一种更高效的对称加密算法。