# SSL 剥离（SSL Stripping）是什么？

> SSL 剥离是一种中间人攻击，攻击者截获本应把用户引向 HTTPS 的跳转或链接，让用户一直停留在明文 HTTP 上。

Source: https://ssl.sh/zh/glossary/ssl-stripping/
Last updated: 2026-11-10

SSL 剥离由 Moxie Marlinspike 在 2009 年提出，并发布了 sslstrip 工具。处在网络路径上的攻击者（例如同一个公共 Wi-Fi 中）截获用户发出的第一个明文请求，因为用户通常直接输入 `example.com` 而不带协议。攻击者不把服务器的 HTTPS 跳转转交给用户，而是自己去连 HTTPS 站点，再用 HTTP 把页面转给用户，同时把页面里的 `https://` 链接全部改成 `http://`。整个过程中用户和攻击者之间从未建立 TLS 连接，自然也不会出现证书警告。

## 为什么重要
它不需要破解任何密码算法，利用的是 TLS 开始之前那一步明文通信。服务器端的 301 跳转无济于事，因为这个响应本身就在攻击者手里。防御只能放在浏览器侧：[HSTS](https://ssl.sh/zh/glossary/hsts/) 让浏览器在请求发出前就在内部升级为 HTTPS，[HSTS 预加载](https://ssl.sh/zh/glossary/hsts-preload/)则连首次访问也覆盖。浏览器的 HTTPS 优先、仅 HTTPS 模式也能进一步降低风险。SSL 剥离是[中间人攻击](https://ssl.sh/zh/glossary/man-in-the-middle/)的一种具体形式，也是协议[降级攻击](https://ssl.sh/zh/glossary/downgrade-attack/)的近亲。企业在评估办公网和访客 Wi-Fi 风险时，通常会把它列为基础检查项。

## 例子
```text
用户   -> http://example.com           被攻击者截获
攻击者 -> https://example.com          与服务器建立真实的 TLS 连接
攻击者 -> 用户：页面的 HTTP 副本，所有 https:// 链接被改为 http://
```

检查站点是否具备防护：

```bash
curl -sI http://example.com  | grep -i '^location'
curl -sI https://example.com | grep -i strict-transport-security
```

## 常见误区
- **把 HTTP 跳转到 HTTPS 就能防 SSL 剥离。** 跳转本身走的是 HTTP，攻击者不转发即可；只有 HSTS 能让浏览器根本不发出那个明文请求。
- **没有登录页的网站没什么可剥离的。** 任何通过 HTTP 提供的页面都可能被注入脚本、广告或伪造的下载链接。
- **用户会看到证书错误。** 不会出现任何错误，用户看到的只是一个 `http://` 地址，而很多人从不留意。

## 相关术语

- [HSTS](https://ssl.sh/zh/glossary/hsts/): HSTS 是一个 HTTP 响应头，告诉浏览器在指定时间内只通过 HTTPS 访问该站点，并且遇到证书错误时不允许用户继续访问。
- [HSTS 预加载](https://ssl.sh/zh/glossary/hsts-preload/): HSTS 预加载是内置在浏览器中的一份域名列表，列表内的域名始终通过 HTTPS 访问，连首次访问、尚未收到 HSTS 头之前也受保护。
- [中间人攻击](https://ssl.sh/zh/glossary/man-in-the-middle/): 中间人攻击是指攻击者暗中插入通信双方之间，转发并可能篡改流量，而双方都以为自己在直接和对方通信。
- [降级攻击](https://ssl.sh/zh/glossary/downgrade-attack/): 降级攻击是指攻击者迫使客户端和服务器协商出比双方实际支持的更旧的协议版本或更弱的算法，从而利用其中的弱点。
- [HTTPS](https://ssl.sh/zh/glossary/https/): HTTPS 是在 TLS 加密连接之上传输的 HTTP，默认使用 443 端口，使网页内容、Cookie 和表单数据被加密，并验证服务器身份。
- [混合内容](https://ssl.sh/zh/glossary/mixed-content/): 混合内容是指通过 HTTPS 加载的页面中，部分脚本、图片、iframe 等子资源仍通过明文 HTTP 加载，削弱了整个页面的安全性。
