HTTP 和 HTTPS 的区别?HTTPS 的加密原理是什么?
对比
| 特性 | HTTP | HTTPS |
|---|---|---|
| 端口 | 80 | 443 |
| 加密 | ❌ 明文传输 | ✅ TLS/SSL 加密 |
| 证书 | 不需要 | 需要 CA 证书 |
| 性能 | 快 | 略慢(握手开销) |
| SEO | 无加分 | 搜索引擎优先 |
| 安全性 | 低(可被中间人攻击) | 高 |
HTTPS 加密原理
HTTPS = HTTP + TLS/SSL,使用混合加密:
1. 非对称加密(握手阶段)
- 客户端连接服务器
- 服务器返回证书(含公钥)
- 客户端验证证书(CA 签名)
- 客户端生成会话密钥,用公钥加密发给服务器
- 服务器用私钥解密获得会话密钥
2. 对称加密(数据传输阶段)
- 双方使用会话密钥加密通信内容
- 对称加密速度快,适合大量数据
TLS 握手流程(TLS 1.2)
Client Server
| --- ClientHello --------------> |
| (支持的加密套件、随机数) |
| |
| <--- ServerHello -------------- |
| (选择的加密套件、随机数) |
| <--- Certificate -------------- |
| (服务器证书,含公钥) |
| <--- ServerHelloDone ---------- |
| |
| --- ClientKeyExchange --------> |
| (用公钥加密的会话密钥) |
| --- ChangeCipherSpec ---------> |
| --- Finished -----------------> |
| |
| <--- ChangeCipherSpec --------- |
| <--- Finished ---------------- |
| |
| <=== 加密通信开始 =============> |TLS 1.3 改进
- 握手从 2-RTT 减少到 1-RTT
- 更安全的加密算法
- 废弃了不安全的算法
为什么不全部用非对称加密
- 非对称加密计算量大、速度慢
- 对称加密快 100-1000 倍
- 所以用非对称加密交换密钥,对称加密传输数据