HTTP的缺点

  1. 通信使用明文(不加密),内容可能会被窃听
  2. 不验证通信方的身份,因此有可能遭遇伪装:
    • 无法确定请求发送至目标的web服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的web服务器
    • 无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端
    • 无法确定正在通信的对方是否具备访问权限
    • 无法判定请求来自何方,出自谁手
    • 即使是无意义的请求也会照单全收,无法阻止海量请求下的DoS攻击
  3. 无法证明报文的完整性,所以有可能已遭篡改

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

HTTPS是身披SSL外壳的HTTP,将HTTP的通信接口部分用SSL和TLS协议代替。
通常HTTP直接和TCP通信,当使用SSL,变成先和SSL通信再由SSl和TCP通信。(SSL是独立于HTTP的协议)
图解HTTP学习(四)---HTTPS

加密

HTTPS采用公开**和共享**的混合加密机制

  1. 服务器将自己的公开**登记值数字证书认证机构
  2. 数字证书认证机构用自己的私有**向服务器的公开**部署数字签名并颁发公钥证书。数字证书认证机构的公开**以事先植入到浏览器中。
  3. 建立通信后,服务器端向客户端发送公钥证书,客户端使用浏览器中数字证书认证机构事先植入的公开**解密公钥证书;获得服务器的公开**和公钥证书上的数字签名,并向数字证书认证机构验证获得的数字签名以确认服务器公开**的真实性。
  4. 客户端使用服务器的公开**对报文加密后发送
  5. 服务器用私有**对报文解密
    图解HTTP学习(四)---HTTPS

HTTPS安全通信机制

步骤图
图解HTTP学习(四)---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请求后,返回HTTP响应
  12. 最后由客户端发送close_notify报文断开连接。(在这之后还有TCP/IP的四次挥手来关闭TCP通信)

流程图
图解HTTP学习(四)---HTTPS
HTTPS缺点
使用HTTPS会导致处理速度变慢。
因为HTTPS需要做服务器、客户端双方加密及解密处理,因此会消耗CPU和内存等硬件资源。
和HTTP通信相比,多了SSL通信部分消耗网络资源;另外SSL通信部分,又因为要对通信进行处理,所以时间上又延长了。
可以使用SSL加速器硬件来改善此问题。

相关文章:

  • 2021-11-07
  • 2021-05-05
  • 2021-08-05
  • 2021-06-11
  • 2021-07-04
  • 2021-04-01
猜你喜欢
  • 2021-09-11
  • 2021-11-06
  • 2022-12-23
  • 2021-07-26
  • 2022-12-23
  • 2021-11-20
  • 2021-04-23
相关资源
相似解决方案