深入学习理解HTTP系列(三) -- 了解HTTPS协议
一、HTTP的缺点
- 通信使用明文(不加密)内容可能会被窃听:
- 问题:TCP/IP是可能被窃听的网络
- 解决:加密防止被窃听
- 通信的加密:SSL(安全套接层)或TLS(安全层传输协议)
- 内容的加密:客户端对HTTP报文进行加密处理
- 不验证通信方的身份,因此有可能遭遇伪装
- 问题:任何人都可发起请求
- 无法确定请求发送至目标的 Web 服务器是否是按真实意图返回响应的那台服务器
- 无法确定响应返回到的客户端是否是按真实意图接收响 应的那个客户端
- 无法确定正在通信的对方是否具备访问权限。
- 无法判定请求是来自何方、出自谁手
- 即使是无意义的请求也会照单全收。无法阻止海量请求下的 DoS 攻击(Denial of Service,拒绝服务攻击)
- 解决:查明对手的证书(SSL)
- 问题:任何人都可发起请求
- 无法证明报文的完整性,所以有可能已遭篡改
- 接收到的内容可能有误(前后可能不一致),中间人攻击(MITM)
- 散列值检验方法(MD5、SHA-1)、数字签名(PGP)
二、HTTPS = HTTP + 加密 + 认证 + 完整性保护
- HTTPS是身披SSL外壳的HTTP:HTTP通信接口部分使用SSL和TLS协议代替
- 加密方法:
- 共享密钥:加密和解密同用一个密钥(问题:发送密钥有被窃听的风险)
- 公开密钥:使用两把密钥(私有密钥+公开密钥)
- 问题:无法证明公开密钥真实性
- 解决:使用证明公开密钥正确性的证书
- 混合加密(HTTPS)
- HTTPS的安全通信机制
- 主流版本:SSL 3.0和TLS 1.0
- SSL速度慢:
- 通信慢:SSL通信消耗网络资源
- 处理速度慢:客户端和服务端需要进行加密和解密的运算处理,消耗硬件资源
- 解决:使用SSL加速器硬件(专用服务器)
- 非敏感信息使用 HTTP 通信,只有在包含个人信息等敏感数据时,才利用 HTTPS 加密通信