图解HTTP阅读笔记4 HTTPS

时间:2021-6-19 作者:qvyue

由于 HTTP 的不安全性,而在 HTTP 的基础之上组装了安全协议从而实现加密 HTTP 通信内容,使用的安全协议有 SSL 或 TLS,用上安全协议的 HTTP 通信就叫 HTTPS。

因此 HTTPS 并不是一个新的协议,而是为了解决 HTTP 的安全缺点的一种方案。

SSL 和 TSL

SSL 最初由网景公司倡导设计开发,但 1.0 及 2.0 版本都存在问题。3.0 版本则有 IETF 组织负责,并且 IETF 基于 SSL 3.0 设计开发了 TSL,所以可以简单理解 SSL 和 TSL 是一个东西,TSL 相对来说更优于 SSL。

不安全的表现

HTTP 通信不安全的表现体现在两个方面。一方面服务端无法辨识有效客户端请求和恶意请求(譬如恶意攻击),因为 HTTP 通信时没有确认通信方的处理步骤。另一方面通信双方无法确认报文的正确性(例如报文主体内容被人篡改,替换都无法辨别),因为 HTTP 通信时无法证明报文正确性。

关于这两点不安全表现,通过 SSL(这里是 SSL 和 TSL 的统称) 提供的认证和加密处理功能可以得到解决。

加密

近代加密的原则基本是加密算法是公开的,密钥是保密的。密钥用于加密解密,其实和生活中的门锁很相似。

加密方式主要分两种,对称加密(共享密钥加密)和非对称加密(公开密钥加密)。对称加密之所以称之为对称或共享,原因就在于加密和解密用的是同一个,这样一来例如客户端与服务器之间通信加密数据,那么加密方就要告知解密方密钥以用来解密。这么一来密钥不就要传过去么,显得不安全,这就有了非对称加密。双方各自有一把密钥用于解密,另外用一把密钥进行加密,这把加密的密钥可以在网络上传输,被知道也没关系,叫做公钥,另一把解密的不能被别人知道,叫做私钥。

SSL 采用的就是公开密钥加密,而 HTTPS 则采用了以上两种方式进行混合加密,从而保证 HTTP 通信时报文正确性。

认证

通过证书这样的身份标识来确认通信双方,从而保证相互辨识,避免其他请求端的浑水摸鱼。证书的提供方是专业的第三方机构,想要获取这样一份证书用于 HTTP 通信就要申请,申请是要花钱的。

另外考虑到公开密钥加密方式的公钥透明性,即这个公钥可能被篡改,有必要对公钥进行认证,从而就有了公开密钥证书。证书的原则就是表明和证书绑定的公开密钥是正确的。

HTTPS 通信步骤

  1. 客户端发送 Client Hello 报文进行 SSL 通信。
  2. 服务端响应 Server Hello 报文。
  3. 服务端发送 Certificate 报文,报文中包含 公钥证书。
  4. 服务端发送 Server Hello Done 报文,完成 SSL 握手。
  5. 客户端响应 Client Key Exchange 报文。
  6. 客户端发送 Change Cipher Spec 报文。
  7. 客户端发送 Finished 报文。
  8. 服务端发送 Change Cipher Spec 报文。
  9. 服务端发送 Finished 报文,完成 SSL 连接建立。
  10. 开始 HTTP 通信。

保证安全也要有所付出

由于用了 SSL 确保 HTTP 通信的安全,使得在网络通信的速度上比普通的 HTTP 要慢,并且为了确保安全,加密认证等一些步骤也会开销内存,CPU 资源,导致处理变慢。

所以在不涉及安全问题的通信上,用普通 HTTP 通信能有更好的体验,而在一些用户登录,支付交易等环节切记要用安全的 HTTPS 通信。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。