为什么要使用HTTPS

我与影子孤独终老i 提交于 2019-11-28 17:25:32

知识点的梳理:

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

      

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

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

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

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

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

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

  • SSL和TLS
    • HTTPS使用SSL和TLS两个协议;
    • 当前主流版本是SSL3.0和TLS1.0
  • SSL速度慢吗?
    • HTTPS在使用SSL时,处理速度会变慢;
    • SSL的慢分两种。一种是指通信慢。另一种是指由于大量消耗CPU及内存等资源,导致处理速度变慢;因为它要加密解密运算嘛~~
    • 只能通过SSL加速器这种硬件改善该问题;
  • 没有一直使用HTTPS的原因
    • 与纯文本通信相比,加密通信会消耗geng
      • --
    • 节约购买证书的开销也是一个原因;
      • 要进行HTTPS通信,必须有证书。这些证书需要向认证机构购买;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!