HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Laye
r),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。首先,我们来看看 HTTP 的一些缺陷,这样才能理解引入 HTTPS 的原因
文章是《图解 HTTP》第七章的读书笔记,如有更多想了解的可翻阅原书
一、HTTP 的缺点
缺点1. 通信使用明文(不加密),内容可能会被窃听
方案1 通信加密
HTTP 协议可以通过和 SSL(Secure Socket Layer, 安全套接层)
或 TLS(Transport Layer Security,安全传输层协议)
组合使用,加密 HTTP 的通信内容。与 SSL 组合使用的 HTTP 被称为 HTTPS。
方案2 内容加密
通过一些加密处理,对内容进行加密,但仍有内容被篡改的风险。
缺点2. 不验证通信方的身份可能遭遇伪装
HTTP 协议的实现本身非常简单,不论是谁发送过来的请求都会返回响应,因此不确认通信方,会存在以下各种隐患。
- 无法确定请求发送至目标的 Web 服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的 Web 服务器。
- 无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端。
- 无法确定正在通信的对方是否具备访问权限。因为某些 Web 服务器上保存着重要的信息,只想发给特定用户通信的权限。
- 无法判定请求是来自何方、出自谁手。
- 即使是无意义的请求也会照单全收。无法阻止海量请求下的 DoS 攻击(Denial of Service,拒绝服务攻击)。
方案1 查明证书
SSL 不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定通信方。证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。另外,伪造证书从技术角度来说是异常困难的一件事。
缺点3. 无法证明报文完整性,可能已遭篡改
比如,从某个 Web 网站上下载内容,是无法确定客户端下载的文件和服务器上存放的文件是否前后一致的。文件内容在传输途中可能已经被篡改为其他的内容。即使内容真的已改变,作为接收方的客户端也是觉察不到的。
像这样,请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击称为中间人攻击(Man-in-the-Middle attack,MITM
)。
方案1 如何防止篡改
常用的是 MD5
和 SHA-1
等散列值校验的方法,以及用来确认文件的数字签名方法。
可惜的是,用这些方法也依然无法百分百保证确认结果正确。因为 PGP 和 MD5 本身被改写的话,用户是没有办法意识到的。
为了有效防止这些弊端,有必要使用 HTTPS
。SSL 提供认证和加密处理及摘要功能。仅靠 HTTP 确保完整性是非常困难的,因此通过和其他协议组合使用来实现这个目标。
二、HTTPS = HTTP + 加密 + 认证 + 完整性保护
HTTPS 并非是应用层的一种新协议。只是 HTTP
通信接口部分用 SSL
和 TLS
协议代替而已。通常,HTTP
直接和 TCP
通信。当使用 SSL
时,则演变成先和 SSL
通信,再由 SSL
和 TCP
通信。
SSL
是独立于 HTTP
的协议,其他运行在应用层的 SMTP
和 Telnet
等协议均可配合 SSL
协议使用。可以说 SSL
是当今世界上应用最为广泛的网络安全技术。