SSL剥离攻击是什么?
SSL剥离攻击(SSL Stripping)是一种将HTTPS连接强制降级为HTTP连接的中间人攻击。攻击成功后,用户看到的网站可能仍能正常访问,但传输的数据已不再加密,账号密码、支付信息等敏感数据可能被窃取。
这种攻击不依赖证书伪造或私钥窃取,而是利用用户对URL外观的信任与协议重定向过程中的逻辑漏洞,在用户毫无察觉的情况下截获登录凭证、支付信息等敏感数据。它已成为公共Wi-Fi、运营商劫持、恶意AP等场景中最隐蔽且高发的Web层威胁之一。
该问题本质上属于TLS/SSL协议部署层面的安全缺陷,而非证书本身失效。
SSL剥离攻击的技术机制
TLS握手前的“信任真空”
浏览器首次访问一个网站时,并未预知该站点是否支持HTTPS。
如果用户手动输入http://example.com或点击HTTP链接,连接即从明文开始。此时攻击者可拦截初始请求,在服务器返回301/302跳转至HTTPS前,直接向用户返回HTTP版本页面.
整个过程无证书验证环节,浏览器不会弹出任何警告。
HSTS缺失导致降级不可逆
当网站未启用HTTP Strict Transport Security(HSTS)响应头时,浏览器无法记住“该域名必须仅用HTTPS访问”的策略。攻击者一旦成功实施一次SSL剥离,后续即使用户手动输入https://,也可能被缓存的HTTP重定向覆盖。
Chrome、Firefox等现代浏览器已内置HSTS预加载列表,但未入表的中小网站完全暴露在此风险中。
混合内容与重定向链的放大效应
即便主站启用了HTTPS,若页面中嵌入了HTTP资源(图片、JS、iframe),攻击者可通过篡改这些资源注入恶意脚本,进一步诱导用户提交表单至HTTP接口。
这种混合内容(Mixed Content)问题会显著扩大SSL剥离的攻击面,尤其在老旧CMS或第三方插件泛滥的站点中极为常见。
SSL剥离攻击流程图式说明

sequenceDiagram
autonumber
actor User as 用户浏览器
actor Hacker as 攻击者 (中间人)
actor Server as 网站服务器
rect rgb(240, 240, 240)
Note over User, Server: HTTP 降级攻击 (SSL Strip) 与数据窃听流程
end
User->>Hacker: 访问 http://example.com (明文请求)
Note over Hacker: 拦截请求,阻止 301 跳转<br/>并在后台代为向服务器发起安全连接
Hacker->>Server: 发起加密连接 (HTTPS)
Server-->>Hacker: 返回加密的 HTTPS 响应
Note over Hacker: 剥离加密 (SSL Strip)<br/>将网页降级为不安全的旧 HTTP 页面
Hacker-->>User: 返回不安全的 HTTP 页面
User->>Hacker: 误以为安全,输入账号与明文密码
Note over Hacker: ⚠️ 成功窃取明文数据!
Hacker->>Server: 使用窃取的凭证进行恶意登录
看完上面的流程图,你可能会纳闷:“我明明设置了自动跳转 HTTPS,为什么用户还会拿到 HTTP 页面?”
问题就出在**“先斩后奏”**的时间差上。
当用户在浏览器输入网址或点击老链接时,默认发出的通常是 http:// 明文请求。
在你的服务器收到这个请求并发出“请跳转到 HTTPS”的指令之前,潜伏在同个 Wi-Fi 或网络节点中的黑客(中间人)就已经把这个请求拦截了。
黑客自己在后台用 HTTPS 顺畅地和你的服务器通信,却把服务器返回的加密网页剥离掉安全外壳(俗称 SSL Strip 攻击),变成一个一模一样的普通 HTTP 网页丢给用户。
用户的浏览器地址栏没有出现安全锁,但因为网页内容完全正常,用户毫无防备地输入了密码。这些密码在发出的瞬间,就被黑客看得一清二楚。
所以传统的服务器重定向就像是“到了店里保安才告诉你进门要戴口罩”,而黑客在路上就把你截胡了。要解决这个安全漏洞,就必须用到下面我们要讲的第二招——HSTS 强制加密,它能让浏览器在出门前就自觉戴好口罩。
SSL剥离攻击和SSL证书过期有什么区别?
很多站长会混淆。
可以解释:
| 问题 | 本质 |
|---|---|
| SSL剥离攻击 | HTTPS被强制降级 |
| 证书过期 | HTTPS证书失效 |
| 证书链错误 | 浏览器无法信任 |
| 混合内容 | 页面加载HTTP资源 |
工程实践中的防护要点
| 指标 | 参考标准 | TopSSL专家建议 |
|---|---|---|
| 证书类型选择 | RFC 8705 / CA/B Forum BR v2.8 | DV证书可满足基础加密,但必须配合HSTS与OCSP Stapling;OV/EV证书对SSL剥离无直接防御作用,但提升用户端识别可信度 |
| HSTS策略配置 | max-age=31536000; includeSubDomains; preload | 生产环境必须设置includeSubDomains并提交至Chrome HSTS Preload List;避免使用max-age=0测试模式上线 |
| HTTP→HTTPS重定向 | CA/B Forum Baseline Requirements §7.1.2.2 | 在Web服务器(Nginx/Apache/IIS)配置301永久重定向,禁用302临时跳转;CDN层需同步开启强制HTTPS(如Cloudflare Always Use HTTPS) |
常见问题
安装了SSL证书就不用担心SSL剥离了吗?
不能。
SSL证书仅保障加密通道建立后的数据机密性,无法阻止连接初始阶段的协议降级。必须配合HSTS、全站HTTPS重定向及混合内容治理才能闭环防护。
免费SSL证书能否用于防御SSL剥离?
可以,但需确保部署完整。
Let’s Encrypt等免费证书在加密强度上与付费证书无差异,关键在服务器配置。TopSSL提供免费SSL证书申请服务,并附带HSTS配置检查工具。
移动App内嵌WebView是否面临SSL剥离风险?
A:是。Android WebView默认不校验SSL证书链,iOS WKWebView虽有严格校验但仍可能被代理工具绕过。必须启用Certificate Pinning(证书固定)并禁用明文HTTP加载。



京公网安备11010502031690号
网站经营企业工商营业执照
















