HTTPS 协议的缺点

HTTPS 相比 HTTP 带来的性能、成本和运维问题

问题

HTTPS 协议相比 HTTP 有哪些缺点?

解答

1. 性能开销

握手延迟

HTTPS 需要 TLS 握手,增加了额外的网络往返:

  • HTTP:TCP 三次握手(1.5 RTT)
  • HTTPS:TCP 握手 + TLS 握手(TLS 1.2 需要 2 RTT,TLS 1.3 需要 1 RTT)

首次连接延迟明显增加。

计算开销

  • 加密解密消耗 CPU 资源
  • 服务器需要处理更多计算,高并发时压力更大
  • 移动设备上更耗电

2. 证书成本

类型说明
购买成本商业证书需要付费(DV/OV/EV 价格不同)
运维成本证书需要定期续期,过期会导致网站不可访问
配置成本需要正确配置证书链,否则部分设备无法访问

3. 缓存限制

HTTP 请求:
客户端 -> 代理服务器(可缓存) -> 源服务器

HTTPS 请求:
客户端 <--加密隧道--> 源服务器

    代理无法读取和缓存内容
  • 中间代理服务器无法缓存 HTTPS 响应内容
  • CDN 需要部署证书才能缓存,配置更复杂

4. 调试困难

  • 抓包工具(如 Wireshark)无法直接查看加密内容
  • 使用 Charles/Fiddler 调试需要安装根证书
  • 生产环境问题排查更困难

5. 兼容性问题

混合内容阻止

<!-- HTTPS 页面中加载 HTTP 资源会被阻止或警告 -->
<script src="http://example.com/script.js"></script>  <!-- 被阻止 -->
<img src="http://example.com/image.png" />            <!-- 警告 -->

老旧设备

  • 部分老设备不支持 TLS 1.2+
  • Windows XP、Android 4.x 等存在兼容问题

6. 证书管理风险

  • 证书过期:网站直接无法访问,显示安全警告
  • 私钥泄露:需要立即吊销并重新部署
  • 证书链不完整:部分浏览器/设备报错

关键点

  • 性能:TLS 握手增加延迟,加解密消耗 CPU
  • 成本:证书购买、配置、续期都需要投入
  • 缓存:代理服务器无法缓存加密内容
  • 调试:抓包和问题排查更复杂
  • 兼容:混合内容被阻止,老设备可能不支持