HTTP 和 HTTPS 的区别 + SSL协议

一、HTTP和HTTPS的基本概念

1、HTTP(HyperText Transfer Protocol:超文本传输协议)

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

HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。

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

2、HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)

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

HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:

  • 1、TCP 三次同步握手
  • 2、客户端验证服务器数字证书
  • 3、DH 算法协商对称加密算法的密钥、hash 算法的密钥
  • 4、SSL 安全加密隧道协商完成
  • 5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。 

 二、HTTP 与 HTTPS  的区别

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

三、HTTPS的工作原理

1、客户端发起 HTTPS 请求

这个没什么好说的,就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。

2、服务端的配置

采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl 就是个不错的选择,有 1 年的免费服务)。

这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3、传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4、客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5、传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6、服务端解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(对称秘钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7、传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8、客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

 四、HTTPS的优点与缺点

1、优点

HTTPS虽然不是绝对安全的,因为拥有根证书和掌握加密算法的组织也可以实施中间人攻击。但这种网络协议目前来说仍是最可靠、最安全的选择之一,并带来以下几个好处:

1)使用 HTTPS 协议能够认证用户和服务器,确保数据被传输到正确的客户端和服务器;


2)HTTPS 协议是基于 SSL+HTTP 协议构建的网络协议,支持加密传输和身份认证。相比 HTTP,HTTPS 更为安全,能够防止数据在传输过程中被窃听、篡改,并保证数据的完整性。


3)虽然不是绝对安全的解决方案,但 HTTPS 目前仍是现有架构下最可靠、最安全的选择之一。它大大增加了中间人攻击所需投入的成本。


4)谷歌曾在 2014 年 8 月调整其搜索引擎算法并指出,“相较于同等条件下的 HTTP 网站,在搜索结果页面上使用 HTTPS 加密网站排名更高。”

2、缺点 

尽管HTTPS具有很多优点,但它也存在以下缺陷:

1)握手阶段可能花费更长时间,导致页面加载时间延长近50%并增加10%到20%的功耗;

2)与HTTP相比,HTTPS连接缓存效率较低,并会导致数据开销和功耗增加,并且现有安全措施可能受到影响;

3)SSL证书需要付费,而且功能越强大,价格就越高。因此,个人网站和小型网站通常不会使用;

4)SSL证书通常需要绑定IP地址,无法在同一IP上绑定多个域名。IPv4资源不足以支持这种消耗。

5)尽管HTTPS协议具有加密功能,但其加密范围有限,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎无效。最重要的是,SSL证书信任链体系并不安全,在某些国家可以控制CA根证书的情况下中间人攻击仍然可行。

五、HTTPS的加密

1、对称密钥加密

对称密钥加密也叫做共享密钥加密,其实就是加密和解密采用了同一个密钥

双方在进行通信时,发送方会利用密钥进行加密,再将密钥一同发送给接收方,让其使用这个密钥进行解密。

这种方法看起来不错,但是也存在问题,如果在发送的时候被拦截下来,密钥就会泄露给中间人,此时中间人就可以通过密钥来对之后的数据进行解密,此时也就失去了加密的意义这时,就引入了非对称加密。

2、非对称加密

非对称加密又叫做公开密钥加密,他使用一对非对称的密钥,一把叫做私有密钥,一把叫做公有密钥。顾名思义,共有密钥是公开的,任何人都可以获得,而私有密钥则不能让任何人知道

当进行通信时,发送方使用对方的公有密钥进行加密,而接收方接收时则使用自己的私有密钥进行解密,这样一来,用于解密的私钥就完全掌握在接收者自己手里,中间人也无法从中窃取密钥,安全也一定程度的得到了保障。

3、混合加密

从上述描述可以得出,由于非对称加密的处理方式比对称加密更为繁琐,因此持续使用非对称加密通信将显著降低通信效率。因此,HTTPS采用了混合加密机制,既包括对称加密又包括非对称加密。

如何实施呢?使用非对称加密来传输用于进行加解密的对称加密密钥。(因为对称加密面临的主要问题在于无法确保其安全性。但是通过采用非对称加密来传输该密码,则可以很好地避免这个问题。)一旦之前的交换被确认是安全的,则可以使用该对等密码进行通信。(由于非对称密码复杂处理导致效率降低,所以在安全情况下使用私钥密码就能大幅提高效率)。

六、SSL

1、SSL 协议

可分为两层:

1)SSL 记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

2)SSL 握手协议(SSL Handshake Protocol),它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

2、SSL 提供服务

1)认证用户和服务器,确保数据发送到正确的客户机和服务器;

2)加密数据以防止数据中途被窃取;

3)维护数据的完整性,确保数据在传输过程中不被改变。

3、SSL 工作流程

1)服务器认证阶段:

a.客户端向服务器发送一个开始信息 "Hello" 以便开始一个新的会话连接;

b.服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的 "Hello" 信息时将包含生成主密钥所需的信息;

c.客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;

d.服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

2)用户认证阶段:

在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

SSL 协议提供的安全通道有以下三个特性:

机密性:SSL 协议使用密钥加密通信数据。

可靠性:服务器和客户都会被认证,客户的认证是可选的。

完整性:SSL 协议会对传送的数据进行完整性检查。

服务器证书(server certificates)是 SSL 数字证书的一种形式,意指通过提交数字证书来证明您的身份或表明您有权访问在线服务。再者简单来说,通过使用服务器证书可为不同站点提供身份鉴定并保证该站点拥有高强度加密安全。是组成 Web 服务器的 SSL 安全功能的唯一的数字标识。通过相互信任的第三方组织获得,并为用户提供验证您 Web 站点身份的手段。服务器证书包含详细的身份验证信息,如服务器内容附属的组织、颁发证书的组织以及称为公开密钥的唯一的身份验证文件。

七、SSL主要存在问题

HTTPS也叫做披着SSL外壳的HTTP,在通信接口部分他使用了SSL和TLS来进行代替。

对于HTTP协议来说,他直接和TCP进行通信。而HTTPS为了保证安全,使用了SSL来提供保障,通信时首先与SSL进行通信,再由SSL来与TCP进行通信,正是因为由SSL的存在,才使得HTTP具备了HTTPS的加密、证书、安全性保障这些功能。

但是成也萧何,败也萧何,SSL为HTTPS保障安全的同时,也降低了他的效率。

1、网络负载问题

相较于HTTP,网络负载可能会慢2到100倍。由于HTTPS需要额外进行SSL通信,整体的通信量也不可避免地增加了。SSL确保安全性的同时,在客户端和服务端都要进行大量的加密和解密运算处理,导致其对服务器和客户端的硬件资源消耗更多,进一步增强了负载。

2、HTTPS使用情况

对于高访问量的Web网站而言,在进行大量加密解密时会带来巨大负荷,此外对于非敏感信息(即可公开信息),HTTPS并无必要。因此,大多数网站并不会一直使用HTTPS,而是只在传输私密内容时才使用来节约资源

3、数字证书成本

数字证书是HTTPS通信所必需的,但其高昂成本使得个人网站及非盈利网站望而却步。因此,这些网站往往继续使用HTTP。

  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hiOoo.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值