什么是SSL剥离攻击?中间人HTTPS降级原理与HSTS防御方案

更新时间:2025-04-12 来源:TopSSL 作者:TopSSL

当您访问一个值得信赖的网站时,您确信自己的数据受到保护?但如果在您不知情的情况下,这种安全性被剥夺,您的敏感信息将暴露给网络犯罪分子,该怎么办?在本文中,我们将详细说明SSL剥离是什么、它如何工作以及如何保护您的企业免受这种复杂的网络威胁。

什么是SSL剥离攻击?

SSL 剥离攻击(SSL Stripping)是一种典型的中间人攻击(MITM)手段,攻击者通过拦截客户端与服务器之间的初始明文 HTTP 请求,阻止安全连接建立,将本应升级的 HTTPS 通信强制降级为纯文本 HTTP 通信。这种攻击利用了用户直接在地址栏输入域名而非完整协议头(https://)的习惯,导致敏感数据在传输层完全暴露。

了解其运作原理对于排查 如何修复SSL证书错误? 以及优化整体站点架构至关重要。若需构建基础的防护防护链路,可先参阅 什么是SSL证书? 掌握非对称加密的基本逻辑。


SSL 剥离攻击

SSL 剥离攻击的核心原理与流程

在未启用强制安全策略的网络环境下,浏览器访问网站的过程往往存在天然的安全漏洞。SSL 剥离攻击并不直接破解 SSL/TLS 协议的加密算法,而是作用于协议协商的“交接点”。

[客户端] ----(1) HTTP 请求----> [攻击者 (MITM)] ----(2) HTTPS 请求----> [目标服务器]
[客户端] <---(4) HTTP 响应---- [攻击者 (MITM)] <---(3) HTTPS 响应---- [目标服务器]

1. 攻击链路拆解

  1. 流量拦截​:攻击者在局域网内通过 ARP 欺骗、DNS 劫持或搭建伪造 Wi-Fi 热点,获取客户端流量的控制权。
  2. 请求伪造与中间人转发​:当用户在浏览器输入 example.com 时,发起的是 80 端口的 HTTP 请求。攻击者拦截该请求,并由自己向目标服务器发起 443 端口的 HTTPS 连接。
  3. 剥离加密响应​:目标服务器返回 301/302 重定向或带有 HTTPS 链接的 HTML 页面。攻击者拦截该响应,将其中所有的 https:// 替换为 http://,再剥离加密层,把纯文本页面返回给用户。
  4. 明文凭据窃取​:用户在前端看到的界面与原站一致,但在提交表单或登录信息时,数据以明文传输给攻击者,攻击者再通过自己的 HTTPS 会话代为提交至服务器。

topssl

常见 SSL 降级攻击形态

网络环境中常见的 SSL 剥离与降级手段一般可以分为以下三类:

攻击类型实施机制常见场景危害特征
经典 SSL 剥离动态修改 HTTP/HTTPS 响应内容,擦除页面中的安全协议头公共 Wi-Fi、局域网 ARP 欺骗用户地址栏不显示绿锁或 HTTPS 标志,流量全程明文
协议降级攻击干扰 TLS 握手协商(如 DOWNGRD 攻击),强迫双方降级使用老旧协议存在历史兼容包的 Web 服务器利用旧版 TLS(如 1.0/1.1)或废弃弱加密套件的已知漏洞
混合钓鱼剥离结合相似域名(Typosquatting)与伪造证书,配合剥离技术恶意邮件、社交工程学攻击构造极具欺骗性的 HTTP 假冒界面,直接诱捕用户凭据

运维视角下的防范方案

单纯依赖部署普通证书无法完全阻断 SSL 剥离,因为攻击发生时客户端压根没有机会建立 TLS 连接。工程落地中需要从服务端配置与浏览器策略联动入手。

1. 部署 HSTS(HTTP 严格传输安全)

HSTS(HTTP Strict Transport Security)是防御 SSL 剥离最直接有效的手段。服务器通过添加响应头,强制浏览器在指定时间内仅使用 HTTPS 访问:

HTTP

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • ​**max-age**​:指定强制 HTTPS 的缓存时间(单位为秒,一般建议设置为一年以上)。
  • ​**includeSubDomains**​:将策略递归应用到所有子域名。
  • ​**preload**​:申请加入浏览器的 HSTS Preload List(预加载列表)。加入后,主流浏览器在首次访问前就会内置强制 HTTPS 规则,彻底消除第一次 HTTP 访问时的风险窗口。

2. 全站 301 强制跳转与 HTTP 响应重写

服务端必须配置严格的全局重定向规则。如果使用 Nginx,一般在 80 端口的 server 块中配置:

Nginx

server {
    listen 80;
    server_name example.com www.example.com;
    return 311 https://$host$request_uri;
}

关于从站点架构层面彻底完成协议平滑过度,可以参考 网站如何从HTTP更改为HTTPS? 的操作细节。

避免敏感 Cookie 在被剥离的环境中通过 HTTP 明文泄漏。配置 Cookie 时必须携带 SecureSameSite 属性:

HTTP

Set-Cookie: session_id=xyz123; Secure; HttpOnly; SameSite=Strict

在开启 Secure 标记后,即便前端页面被剥离为 HTTP,浏览器也不会在明文请求中发送该 Cookie。


SSL 剥离攻击技术型总结

SSL 剥离攻击本质是对 HTTP 到 HTTPS 升级过渡期无保护状态的漏洞利用。通过中间人代理抹去响应包中的加密指令,攻击者能够无感知地把流量降级为纯文本传输。仅部署证书无法防御此类攻击,必须在服务端集成 HSTS 响应头并申请 HSTS Preload 预加载,结合 Cookie Secure 属性锁定传输信道,才能从源头上切断协议降级的可能性。


常见问题

为什么网站安装了 SSL 证书,用户依然会被 SSL 剥离攻击?

因为 SSL 证书作用于 HTTPS 连接建立后的数据加密阶段。如果用户首次访问输入的是 http://,且攻击者在第一次重定向返回前就拦截并篡改了数据,连接就根本无法升级到 HTTPS,证书也就无法生效。

如何判断网站是否容易遭受 SSL 剥离攻击?

一般可以通过检测响应头来判断。如果网站没有配置 Strict-Transport-Security 请求头,或者没有加入 HSTS 预加载列表,且允许纯 HTTP 状态下直接加载敏感表单页面,即存在被剥离降级的风险。

HSTS Preload(预加载)和普通的 HSTS 响应头有什么区别?

普通的 HSTS 响应头需要用户“至少成功访问过一次 HTTPS 页面”后,浏览器才会记录规则;而加入 HSTS Preload 列表后,浏览器在安装时就已经内置了该域名必须使用 HTTPS 的规则,消除了首次访问时被攻击的风险。

配置 HSTS 会影响网站现有的 HTTP 业务吗?

会。如果站点内依然存在无法提供 HTTPS 服务的老旧子系统,开启 includeSubDomains 规则的 HSTS 会导致这些子系统在客户端直接打不开。因此部署前需确认全站及子域名均已正常支持 HTTPS。

有用
分享
无用
反馈
返回顶部
0 个回答
1326 次浏览
立即探索,帮您快速寻找适合您的SSL数字证书 申请SSL证书
免费SSL证书 - SSL证书申请与HTTPS加密平台 | TopSSL
提供免费与付费SSL证书申请
关注 TopSSL 公众号, RSS订阅SSL资讯与技术支持

2004-2026 © 北京传诚信  版权所有 | TopSSL 提供免费SSL证书申请、HTTPS加密部署及企业级SSL证书服务,支持网站安全连接、数字证书安装与浏览器信任验证。  北京市朝阳区鹏景阁大厦16层

技术协助:wo@topssl.cn 企业咨询:vip@topssl.cn