HTTP与HTTPS区别

为什么需要HTTPS

HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。

举个最常见的例子,用户登陆。用户输入账号,密码,采用HTTP的话,只要在代理服务器上做点手脚就可以拿到你的密码了。

用户登陆 --> 代理服务器(做手脚)--> 实际授权服务器

在发送端对密码进行加密?没用的,虽然别人不知道你原始密码是多少,但能够拿到加密后的账号密码,照样能登陆。

什么是HTTP

HTTP 是一种协议,全称叫作:超文本传输协议(HTTP,HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。

同样 HTTPS 也是一种超文本传送协议,(HTTPS,Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。用于安全的 HTTP 数据传输。

超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息。HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此 HTTP 协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决 HTTP 协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议 HTTPS。为了数据传输的安全,HTTPS 在 HTTP 的基础上加入了 SSL 协议,SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTP有什么问题

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据加密传输,网景公司设计了SSL(Sercure Socket Layer)协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS。

缺点:

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

优点:

  • 简单
  • 传输速度快

什么是HTTPS

HTTP与HTTPS区别

HTTPS 可以认为是 HTTP + TLS。

Https并非是应用层的一种新协议。只是http通信接口部分用SSL(安全套接字层)和TLS(安全传输层协议)代替而已。即添加了加密及认证机制的HTTP称为HTTPS(HTTP Secure).

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

HTTP和HTTPS协议的区别

  1. HTTPS更安全:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议的信息明文传输安全;
  2. HTTPS需要申请证书:HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费,费用大概与.com域名差不多,每年需要大约几十元的费用。而常见的HTTP协议则没有这一项;
  3. 端口不同:HTTP使用的是大家最常见的80端口,而HTTPS连接使用的是443端口;
  4. 状态不同:HTTP的连接很简单,是无状态的。而HTTPS协议是SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全;

从上面可看出,HTTPS和HTTP协议相比提供了

  • 数据完整性:内容传输经过完整性校验
  • 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加***
  • 身份认证:第三方无法伪造服务端(客户端)身份

HTTPS是如何保障安全的

HTTP与HTTPS区别

HTTPS这个多出来的S就是secure的意思,也就是HTTP的安全升级版。

HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装。

HTTP --> TCP (明文传输)

其实就是在HTTP跟TCP中间加多了一层加密层TLS/SSL

什么是TLS/SSL?

通俗的讲,TLS、SSL其实是类似的东西,SSL是个加密套件,负责对HTTP的数据进行加密。TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。

SSL/TLS简单介绍

TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 netscape 公司于 1995 年发布,1999 年经过 IETF 讨论和规范后,改名为 TLS。如果没有特别说明,SSL 和 TLS 说的都是同一个协议。

HTTP 和 TLS 在协议层的位置以及 TLS 协议的组成如下图:

HTTP与HTTPS区别

SSL/TLS作用

不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。

  1. 窃听风险(eavesdropping):第三方可以获知通信内容。
  2. 篡改风险(tampering):第三方可以修改通信内容。
  3. 冒充风险(pretending):第三方可以冒充他人身份参与通信。

SSL/TLS协议是为了解决这三大风险而设计的,希望达到:

  1. 所有信息都是加密传播,第三方无法窃听。
  2. 具有校验机制,一旦被篡改,通信双方会立刻发现。
  3. 配备身份证书,防止身份被冒充。

SSL/TLS是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下

HTTP与HTTPS区别

原先是应用层将数据直接给到TCP进行传输,现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。

将数据加密后再传输,而不是任由数据在复杂而又充满危险的网络上明文裸奔,在很大程度上确保了数据的安全。这样的话,即使数据被中间节点截获,坏人也看不懂。

SSL/TLS协议提供的服务主要有:

  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2. 加密数据以防止数据中途被窃取;
  3. 维护数据的完整性,确保数据在传输过程中不被改变。

TLS与SSL区别

简单理解TLS是SSL的升级版,一般都把他们两个当作一个东西

为什么要使用HTTPS

1、HTTP/2协议只支持HTTPS加密连接

我们终于在网络技术方面取得了一次大飞跃,推出了HTTP/2协议取代已经使用了超过15年的HTTP/1.1协议。使用HTTP/2有一大堆的好处,但是在这篇文章里我们需要关注的关键点就是:所有主流浏览器只支持使用TLS1.2协议安全连接的HTTP/2协议。Chrome、火狐、Safari、Opera、IE和Edge都要求使用HTTPS加密连接,才能使用HTTP/2。这对网站所有者来说是另一个有利的推动因素。

2、HTTP页面将标记“不安全”

当用户访问网站时,没人想要浏览器上的红色警告,但是如果你的网站采用HTTP链接来传输数据,那红色警告将成为常态。

以前浏览器对不安全的HTTP页面没有任何标记,而只含有部分不安全因素的HTTPS页面却显示安全警告,让人们误以为含有不安全因素HTTPS页面不如HTTP页面安全,这是非常错误的。谷歌和火狐将在标识上做进一步优化,区分HTTP不安全连接和HTTPS安全连接,谷歌Chrome将为所有HTTP网站打红叉,用户可以在Chrome 48或者部分更老版本中体验到这项全新的功能;火狐浏览器将从 Firefox 的开发版 46 开始,对"使用非HTTPS提交密码"的页面进行警告。网站所有者将有更充分的理由让网站支持HTTPS加密。

HTTP与HTTPS区别

3、HTTPS加密提升搜索排名

所有人都希望得到很好的搜索引擎排名,网站使用HTTPS加密连接可以帮助你的网站提升搜索引擎排名!谷歌早在2014年就宣布,将把HTTPS加密作为影响搜索排名的重要因素,并优先索引HTTPS网页。百度也表示,开放收录HTTPS站点,同一个域名的HTTP版和HTTPS版视为一个站点,优先收录HTTPS版;百度还表示,网站HTTPS加密不会对流量产生负面影响。在搜索引擎巨头的倡导和实践下,我们可以预见HTTPS加密将在未来产生越来越大的影响力。

4、HTTPS加密防止中间人流量劫持

当你的网站通过HTTP连接传输网页内容时,WiFi节点、运营商、路由器等任何传输节点都可以对网站传输内容进行劫持、篡改、恶意注入等,比如早已见惯的广告弹窗。很多人已经对此麻木,并认为流量劫持不会造成什么损失,但是服务器采取HTTP不安全连接,其实是给黑客留下一道后门,可以向你的网页注入任意恶意内容,如盗号木马等,通过多种你无法觉察的方式窃取网站数据或向您的终端用户下手。HTTPS加密可以有效阻止流量劫持,尤其是全站HTTPS加密,封装所有流量加密传输,让中间人没有可乘之机。

5、iOS和安卓都要求使用HTTPS加密

苹果iOS的App Transport Security和谷歌安卓的usesCleartextTraffic manifest attribute,都推动移动APP默认使用HTTPS加密连接进行通信。苹果iOS强制APP使用HTTPS加密连接,并且要求非常严格,包括只使用TLS1.2协议,必须使用RSA2048位或ECC256位的公钥算法及SHA256签名算法等。如果你的内容或API接口需要在移动APP上使用,那么必须按要求使用HTTPS加密连接。

6、某些权限禁止使用HTTP连接

谷歌Chrome安全团队宣布,采用不安全连接访问浏览器特定功能将被禁止访问,例如地理位置应用、应用程序缓存、获取用户媒体等。

采用不安全的HTTP连接访问用户位置信息并发送,可能造成用户信息的泄漏,确保这类超级权限功能全程使用HTTPS安全连接是使用这些功能的重要步骤。如果你最近使用了一些这样的功能并且希望继续在你的网站上使用,那么你必须让这些页面使用HTTPS加密连接。同样,如果你想增加这些功能,你需要首先设置HTTPS加密连接。

理解HTTPS加密的误区

1、HTTPS加密降低网站性能

虽然TLS的计算量较大,但以目前的设备性能和硬件技术来说,已经不成问题。淘宝、天猫于2015年实现全站HTTP加密,涉及数百个应用、超百万个页面,并顺利通过“双十一”海量流量考验。淘宝分享全站HTTPS技术改造细节时,阿里巴巴技术保障部技术专家李振宇介绍,阿里电商在启用全站HTTPS后,性能不降反升,用户访问网站和移动端更为流畅。

2、启用HTTPS加密成本昂贵

启用HTTPS加密需要向CA机构申请SSL证书,国内CA机构沃通WoSign提供免费SSL证书,可以一次性申请2年期,支持5个多域名,中文申请界面,申请非常快捷方便。此外还有国外机构Startcom等也可提供免费SSL证书。个人站长的博客站点可以申请免费SSL证书,零成本实现HTTPS加密,而企业级网站建议还是付费申请企业级以上的SSL证书,如OV SSL证书或EV SSL证书。沃通CA不仅提供免费SSL证书外,付费SSL证书价格也很优惠,并提供全天候的官方服务。

任何新站点或新的web应用都应该上线前启用HTTPS加密,这是最经济有效的方式。已经上线但尚未启用HTTPS加密的网站,可以向沃通CA咨询HTTPS加密改造方案,尽早开启HTTPS加密,迎接全球HTTPS加密浪潮。

参考:
https://zhangzifan.com/https-http-tls-ssl.html

https://www.wosign.com/faq/faq2016-0309-01.htm

https://zh.wikipedia.org/wiki/%E5%82%B3%E8%BC%B8%E5%B1%A4%E5%AE%89%E5%85%A8%E6%80%A7%E5%8D%94%E5%AE%9A

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

https://segmentfault.com/a/1190000002554673

https://ziyuan.baidu.com/college/articleinfo?id=1022

https://segmentfault.com/a/1190000004523659

http://www.techug.com/post/https-ssl-tls.html