HTTP与HTTPS的区别

产生背景

HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间,以明文方式传递信息,不提供任何方式的数据加密,因此使用HTTP协议传输隐私信息(如:银行卡号、密码等支付信息)非常不安全。
为了解决这一安全缺陷,网景公司设计了SSL(Secure Sockets Layer)协议,在HTTP的基础上加入了SSL协议,SSL依靠SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。从而诞生了HTTPS(安全套接字层超文本传输协议)。
简单来说,HTTPS协议(SSL + HTTP协议)是进行加密传输、身份认证的网络协议,是HTTP的安全版。
下图直观地展示了两者的关系:
HTTP与HTTPS的区别

两者的区别

  • 工作层:在OSI网络模型中,HTTP工作于应用层,而HTTPS工作在传输层。
  • 连接端口:HTTP标准端口是80,而HTTPS的标准端口是443。
  • 传输方式:HTTP是超文本传输协议,信息是明文传输,而HTTPS是SSL加密传输协议。
  • 工作耗时:HTTP耗时=TCP握手,而HTTPS耗时=TCP握手+SSL握手。
  • 显示形式:HTTP的URL以http://开头,而HTTPS的URL以https://开头。
  • 费用:HTTP无需费用,而HTTPS需要到CA申请证书,一般免费证书较少,需要一定费用。
  • 安全性:HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

使用HTTP的安全风险

  • 由于传输的数据没有经过加密处理,所以一旦别人获取到你的数据包,就能轻易获取到数据的信息。
  • 网站容易被黑客域名劫持。下面详细讲解一下域名劫持:

域名劫持

这里假设读者了解域名解析的过程。域名劫持就是黑客在你上网的某个网络中要经过的DNS服务器中把DNS解析记录改了,将映射ip指向了自己做的和你要访问的网站一模一样的网站。这个时候,你看地址栏完全没有问题,但是ip却不是目标服务器的ip,因此这个隐蔽性很强。
HTTPS可以解决这个安全问题。证书中心在申请证书的时候都是通过严格审核的,这个时候黑客虽然能够劫持域名,但是却伪造不了https的访问方式,即他肯定不支持HTTPS协议,浏览器地址栏上肯定是http://开头的。因为证书他是伪造不出来的。SSL证书在服务器上部署,https访问必须在其服务器上配置SSL证书,这个黑客是拿不到的。所以浏览器有时候会弹出非https安全链接的时候要注意了,你现在访问的“正规”网站可能是假的,你的DNS可能被劫持了。DNS隐蔽性太强了,所以chrome慢慢的开始对于http的网站访问提示不安全,以后的网站肯定是转向https的趋势。
要想详细了解数字证书以及加密过程,该博客讲的极好,安利一波:
http协议安全问题-https诞生