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
- 成本:证书购买、配置、续期都需要投入
- 缓存:代理服务器无法缓存加密内容
- 调试:抓包和问题排查更复杂
- 兼容:混合内容被阻止,老设备可能不支持
目录