大家应该对HTTP和HTTPS不太陌生,我们在打开网站时都可以在网站URL上看到HTTP或HTTPS协议。那么他们具体的概念还有他们之间的区别是什么呢?今天我就来带大家学习一下。

一、HTTP

概念:

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。它是一种基于TCP/IP 的应用层通信协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加。HTTP协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。

原理:

客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,一般TCP连接的端口号是80。建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URI)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和许可内容。

服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

缺点:

HTTP协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。

二、HTTPS

概念:

是以为目标的HTTP通道,是HTTP的版。HTTPS的基础是SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

原理(过程):

客户端发起HTTPS请求:客户端的浏览器向服务器发送请求,并传送客户端SSL协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

服务端的配置:采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

传送证书:服务器向客户端传送SSL协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

客户端解析证书:客户端利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的 “发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。

传送加密信息:用户端随机产生一个用于通讯的 “对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

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

传输加密后的信息:这部分信息是服务端用私钥(随机值)加密后的信息,可以在客户端被还原。

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

作用:

数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么。

数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收。

身份校验性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方。

优点:

  • 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
  • HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议,可防止数据在传输过程中不被窃取、修改,确保数据的完整性。
  • HTTPS是现行架构下的解决方案,虽然不是,但它大幅增加了中间人攻击的成本。

缺点:

  • HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电。
  • HTTPS连接缓存不如HTTP,会增加数据开销,甚至已有的措施也会因此而受到影响。
  • HTTPS协议的是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
  • SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
  • 功能越强大的SSL成本越高。部署HTTPS后,因为HTTPS协议的工作要增加额外的计算资源消耗,例如SSL协议加密算法和SSL交互次数将占用的计算资源和服务器成本。
  • HTTPS协议的加密范围也比较有限。在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的是SSL证书的信用链体系并不,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

三、HTTP和HTTPS的区别

HTTPS协议需要到CA(Certificate Authority,证书颁发机构)申请证书,不过一般免费证书较少,因而需要费用。

HTTP是超文本传输协议,信息是明文传输,而HTTPS则是具有性的SSL/TLS加密传输协议。

HTTP和HTTPS使用的是不同的连接方式,用的端口也不一样,HTTP是80,HTTPS是443。

HTTP的连接很简单,是无状态的(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的信息。)。HTTPS协议是由 SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议。

总结

从上述文章我们可以清楚的知道HTTPS相比HTTP协议提供了:

  1. 保证数据完整性:内容传输经过完整性校验,防止传输的内容被中间人冒充或者篡改;
  2. 数据隐私性:内容经过对称加密,每个连接生成一个的加密密钥,中间者无法直接查看明文内容;
  3. 身份认证:通过证书认证客户端访问的是自己的;服务器,第三方无法伪造服务端(客户端)身份。

正是这些功能,才使得HTTPS协议成为了现在网络的主流协议。