为什么要使用HTTPS

知识点的梳理:

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

      

  • HTTP加上加密处理和认证以及完整性保护后即是HTTPS

    为什么要使用HTTPS

    • 说明:我们把添加了加密及认证机制的HTTP称为HTTPS(HTTP Secure);
    • 使用HTTPS通信时,不再使用http://,而是改用https://。当浏览器方位HTTPS通信有效的Web网站时,浏览器的地址栏内会出现一个带锁的标记。对HTTPS的显示方式会因浏览器的不同而有所改变;

      为什么要使用HTTPS

  • HTTPS是身披SSL外壳的HTTP
    • HTTPS不是应用层的一种新协议。只是HTTP通信接口部分用SSL和TLS协议代替而已;
    • 通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信;
      • 为什么要使用HTTPS
      • 采用了SSL后,HTTP就拥有了HTTPS的加密,证书和完整性保护这些功能;
    • SSL独立于HTTP协议,不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用;
  • 相互交换**的公开**加密技术
    • SSL采用的加密方法为公开**加密(Public-key cryptog raphy);
    • 近代加密方法中,加密算法是公开的,但**是保密的。这样来保证加密方法的安全性;
    • 加密解密都需要**;
    • 共享**加密的困境:
      • 为什么要使用HTTPS
      • 加密解密同用一个**的方式称为共享**加密;
        • 这种方式加密时,必须将**也发送给对方,如果在发送时,通信被监听,**泄露加密就失去了意义;

          为什么要使用HTTPS

    • 使用两把**的公开**加密
      • 公开**加密使用一对非对称的**。一把私有**,一把公开**
        • 私有**不能让其他任何人知道;
        • 公开**可以随意发布,任何人都可以获得;
      • 使用这种加密方式,发送密文的一方使用对方的公开**进行加密处理,对方收到被加密的信息后,再使用自己的私有**进行解密。这样,就不需要发送用来解密的私有**了;

        为什么要使用HTTPS

    • HTTPS采用混合加密机制
      • 采用共享**加密和公开**加密两者并用的混合加密机制。若**能够实现安全交换那么有可能会考虑仅使用公开**加密来通信。
      • 公开**加密与共享**加密相比,处理速度较慢;

        为什么要使用HTTPS

  • 证明公开**正确性的证书
    • 公开**加密方式无法证明公开**本身是货真价实的公开**;
      • 可通过使用数字证书认证机构和其相关机关办法的公开**证书来解决这个问题;
    • 数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上;
      • 数字证书认证机构的业务流程:
        • 为什么要使用HTTPS
    • 可证明组织真实性的EV SSL证书
      • 证书的一个作用是用来证明作为通信一方的服务器是否规范,另一个作用是可确认对方服务器背后运营的企业是否真实存在。拥有该特性的证书就是EV SSL证书;
      • 拥有EV SSL证书的Web网站的浏览器地址栏处的背景色是绿色的,在地址栏左侧显示了SSL证书中记录的组织名称以及颁发证书的认证机构的名称;
      • 总之,拥有该证书的网站能够获得更高的认可度;
    • 用以确认客户端的客户端证书
      • 以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端,作用类似服务器证书;
      • 但客户端证书面临着安装,需要付费等等问题,所以认可度不高;
    • 由自认证机构颁发的证书称为自签名证书
      • 使用OpenSSL开源程序的话,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发证书;但该证书在互联网上不可作为证书使用;
  • HTTPS的安全通信机制
    • HTTPS的通信步骤

 

为什么要使用HTTPS

步骤1:客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本,加密组件列表;
步骤2:服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的;

步骤3:之后服务器发送Certificate报文。报文中包含公开**证书;

步骤4:最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束;

步骤5:SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应;报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开**进行加密;

步骤6:接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret**加密;

步骤7:客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准;

步骤8:服务器同样发送Change Cipher Spec报文;

步骤9:服务器同样发送Finished报文;

步骤10:服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求;

步骤11:应用层协议通信,即发送HTTP响应;

步骤12:最后由客户端断开连接。断开连接时,发送close_notify报文。左图做了一些省略,这步之后再发送TCP FIN报文来关闭与TCP的通信;

  

以上流程中,应用层发送数据时会附加一种叫做MAC的报文摘要。MAC能够查知报文是否遭到篡改,从而保护报文的完整性;

下面是对整个流程的图解。下图说明了从仅使用服务器端的公开**证书(服务器证书)建立HTTPS通信的整个过程:
 

为什么要使用HTTPS

  • SSL和TLS
    • HTTPS使用SSL和TLS两个协议;
    • 当前主流版本是SSL3.0和TLS1.0
  • SSL速度慢吗?
    • HTTPS在使用SSL时,处理速度会变慢;
      • 为什么要使用HTTPS
    • SSL的慢分两种。一种是指通信慢。另一种是指由于大量消耗CPU及内存等资源,导致处理速度变慢;因为它要加密解密运算嘛~~
    • 只能通过SSL加速器这种硬件改善该问题;
  • 没有一直使用HTTPS的原因
    • 与纯文本通信相比,加密通信会消耗geng
      • --
    • 节约购买证书的开销也是一个原因;
      • 要进行HTTPS通信,必须有证书。这些证书需要向认证机构购买;