前端 & AI 面试题库
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 生成)