一、HTTP 与 HTTPS 的区别
项目 | HTTP | HTTPS |
---|---|---|
全称 | HyperText Transfer Protocol | HyperText Transfer Protocol Secure |
端口 | 80 | 443 |
协议层 | 应用层 | 应用层 + TLS(安全层) |
加密方式 | 明文传输 | 加密传输(TLS) |
安全性 | 易被劫持、中间人攻击 | 可加密、防篡改、防伪装 |
是否需证书 | 否 | 是(由 CA 机构颁发) |
二、HTTPS 的核心安全保障
HTTPS 基于 TLS(或旧版 SSL)实现以下三个目标:
- 机密性(防监听):使用对称加密加密数据内容
- 身份认证(防伪装):通过数字证书验证服务器身份
- 完整性校验(防篡改):使用摘要算法保证数据未被修改
三、HTTPS 加密通信原理(TLS 握手过程)
混合加密机制:
加密方式 | 使用目的 | 特点 |
---|---|---|
非对称加密 | 握手阶段传输密钥 | 安全但慢 |
对称加密 | 正文传输 | 快但需安全传递密钥 |
摘要 + MAC | 校验完整性 | 防止数据被篡改 |
TLS 1.2 握手步骤:
四、数字证书与身份认证
数字证书包含:
- 公钥
- 服务器域名
- 颁发机构(CA)
- 有效期
- 签名算法(SHA256)
验证方式:
客户端浏览器内置 根证书列表,通过链式验证服务器的证书是否被信任。
五、TLS 1.3 对比 TLS 1.2
特性 | TLS 1.2 | TLS 1.3 |
---|---|---|
握手轮次 | 至少 2 次 RTT | 最快 1 次 RTT(支持 0-RTT) |
加密套件 | 多(含部分弱算法) | 默认强加密(去除 RSA 握手) |
会话恢复 | 使用 Session ID/Ticket | 使用 PSK |
前向保密 | 可选 | 默认启用 |
六、HTTPS 常见问题总结
1. HTTPS 为什么比 HTTP 安全?
答: HTTPS 使用 TLS 实现加密通信、防监听、防篡改和身份认证,相比 HTTP 明文传输更安全。
2. HTTPS 使用哪些加密算法?
类型 | 说明 | 示例算法 |
---|---|---|
非对称加密 | 握手阶段传输密钥 | RSA、ECDHE |
对称加密 | 加密通信内容 | AES、ChaCha20 |
摘要算法 | 校验完整性 | SHA-256、HMAC |
3. HTTPS 全程使用非对称加密吗?
答: 否。
握手阶段使用非对称加密交换对称密钥,之后的通信使用对称加密(更高效)。
4. 数字证书是什么?客户端如何验证?
答: 证书由 CA 签发,包含服务器公钥、域名等信息。客户端通过浏览器预置的根证书验证其合法性(链式信任模型)。
5. TLS 握手过程简述?
答: 客户端发送 Hello → 获取服务器证书 → 验证后生成对称密钥 → 使用公钥加密密钥传输 → 建立安全通道。
6. 中间人攻击是什么?HTTPS 如何防止?
答: 中间人伪装成服务端窃听数据。HTTPS 使用证书认证 + 加密通信,确保客户端只能与真正的服务器通信,防止中间人。
7. TLS 1.2 vs TLS 1.3 的主要区别?
- TLS 1.3 性能更优,握手更快(支持 0-RTT)
- 移除不安全算法,默认启用前向保密
- 加密元数据更强,防止探测
七、总结
特性 | HTTPS 优势 |
---|---|
保密性 | 数据加密,防止监听 |
身份认证 | 数字证书,防止伪造 |
完整性 | 摘要校验,防止数据被篡改 |
性能(TLS 1.3) | 握手更快,资源更节省 |
应用场景 | 登录、支付、传输隐私数据的所有 Web 应用场景 |