Browser
HTTPS 原理
HTTPS 的原理是什么?
核心答案(快答版)
HTTPS = HTTP + TLS/SSL 加密,通过非对称加密交换密钥,然后用对称加密传输数据。
一句话总结
客户端和服务器通过TLS 握手建立安全连接,交换对称加密密钥,之后所有数据都用这个密钥加密传输。
TLS 握手流程(简化版)
1. 客户端 → 服务器:支持的 TLS 版本、加密套件、随机数 A
2. 服务器 → 客户端:选择的 TLS 版本、服务器证书、随机数 B
3. 客户端验证证书(CA 签名、域名、有效期)
4. 客户端生成随机数 C(Pre-Master Secret),用服务器公钥加密发送
5. 双方用 A、B、C 生成会话密钥(Master Secret)
6. 之后所有数据用会话密钥加密传输核心概念
1. 非对称加密(RSA/ECDHE)
- 用于交换密钥(握手阶段)
- 公钥加密,私钥解密
- 安全但慢
2. 对称加密(AES)
- 用于传输数据(通信阶段)
- 同一密钥加密解密
- 快速高效
3. 数字证书
- 证明服务器身份
- 由 CA(证书颁发机构)签名
- 包含公钥、域名、有效期
4. 混合加密
- 握手用非对称加密(安全)
- 通信用对称加密(快速)
- 兼顾安全性和性能
延伸追问
1. HTTPS 为什么安全?
回答:三重保障:
1. 加密传输
- 数据加密,即使被截获也无法读取
2. 身份认证
- 证书验证服务器身份,防止中间人攻击
3. 数据完整性
- 使用 MAC(消息认证码)确保数据未被篡改
2. TLS 1.2 和 TLS 1.3 的区别?
回答:主要区别:
TLS 1.2:
- 握手需要 2-RTT(两次往返)
- 支持多种加密套件
TLS 1.3:
- 握手只需 1-RTT(一次往返)
- 0-RTT 模式(后续连接)
- 移除不安全的加密算法
- 性能提升 30-50%
3. 证书链验证过程?
回答:验证步骤:
1. 浏览器获取服务器证书
2. 检查证书是否过期
3. 检查域名是否匹配
4. 验证证书签名(用 CA 公钥)
5. 验证 CA 证书(递归验证到根 CA)
6. 检查根 CA 是否在信任列表信任链:
服务器证书 → 中间 CA → 根 CA(浏览器内置)4. 中间人攻击如何防范?
回答:HTTPS 的防护机制:
1. 证书验证
- 中间人无法伪造证书(没有 CA 私钥)
- 浏览器会显示证书错误
2. 公钥固定(Certificate Pinning)
- 应用内置服务器公钥
- 即使证书被伪造也能检测
3. HSTS(HTTP Strict Transport Security)
- 强制使用 HTTPS
- 防止降级攻击
5. HTTPS 的性能影响?
回答:性能开销:
1. TLS 握手
- TLS 1.2:2-RTT(约 100-200ms)
- TLS 1.3:1-RTT(约 50-100ms)
2. 加密解密
- CPU 开销:约 5-10%
- 现代 CPU 有硬件加速,影响很小
3. 优化方法
- 使用 TLS 1.3
- 启用 HTTP/2(减少连接数)
- 会话复用(Session Resumption)
- OCSP Stapling(减少证书验证时间)
结论:性能影响可接受,安全性收益远大于性能损失。
(注:文档部分内容可能由 AI 生成)