当前位置: 首页 > news >正文

06:装了一个证书,你的所有 HTTPS 就全裸了

大家好,我是毛衣哥。上一期我们把 HTTP 扒光了,这一期来看看加了锁的 HTTPS 又是怎么被一步步拧开的。准备好瓜子,七步拆完。

前几篇反复在说"装证书是关键"。但你有没有停下来认真想过——那个安装证书的弹窗,当你点了"确定"之后,到底发生了什么?
这篇不聊协议细节了,就聊一件事:你装在系统里的那个抓包 CA,到底有多大权力。


装一个 CA 证书 = 给了抓包工具一把万能钥匙

先跟你讲个故事。

2015 年,安全公司 Netcraft 发布了一份报告。他们在互联网上扫描了数百万个 HTTPS 网站,发现了一个奇怪的现象:

很多网站的证书是被同一个未知 CA 签发的。

这个 CA 不在任何操作系统预装的根证书列表里。它是一个"自定义的"CA,被安装在了数百万台电脑上——每次用户安装某款知名的"免费 WiFi 加速软件"时,就被一起装上了。

这款加速软件做的事情就是:中间人劫持你的 HTTPS 流量,注入数据压缩层。理论上它声称可以帮你节省流量。实际上它能看到你所有的 HTTPS 数据。

这个案例的后续是:安全社区发现了这个行为,通报了 Google。Chrome 开始对这款软件的证书发出警告。

但重点不是那个软件做了什么。重点是:你"自愿"安装了它的 CA。一旦装了,它什么 HTTPS 都能看到。


你装的那个抓包 CA 能做什么?我们一条条列出来

假设你装了 Charles 的 CA。

Charles 现在可以:

1. 完整看到你访问的所有网站的 URL

不只是域名。是完整路径。包括:

  • https://github.com/gongzhxu/dumpany-desktop/pull/123
  • https://mail.google.com/mail/u/0/#inbox/xxxxxxxx
  • https://www.yinlian.com/transfer?to=xxxx&amount=10000

SNI 只是域名。中间人拿到的是完整路径。

2. 完整看到你所有 POST 请求的内容

登录密码、支付金额、聊天内容、文件上传——解密之后全是明文的 JSON、表单数据、或者文件流。

3. 完整看到服务器返回的所有数据

你的个人资料、你的订单列表、你的聊天记录、你刷到的推荐内容——全部可见。

4. 看到所有的 Cookie、Session Token、API Key

一个 https 请求在 Header 里附带的Cookie: sessionid=xxxx——中间人拿到了,可以直接拿去冒充你登录。

5. 甚至能看到一部分"不应该看到"的数据

比如你访问某些网站时,网站会返回Set-Cookie: HttpOnly; Secure——设置为 HttpOnly 的意思是 JavaScript 不能读取这个 Cookie(防 XSS)。但中间人可不管这个——它不在浏览器里,它解密了 HTTPS 之后,所有的 Cookie 都是明文的,包括 HttpOnly 标记的 Cookie。

技术上,它看不到的是什么?

  • 端到端加密的应用层数据(如 Signal 协议的内容——中间人只能看到 Signal 的加密 payload)
  • 对证书做了固定(Certificate Pinning)的应用的流量
  • 不走系统代理的应用的流量

但对于 99% 的普通用户来说,装了 CA 之后,所有 HTTP 相关的隐私对抓包工具来说都是完全透明的。


如果你用的抓包工具有后门

说一个更让人不安的。

Charles 是一个商业软件。Fiddler 是 Telerik 的产品。mitmproxy 是开源项目。

正常情况下,它们不会记录你的隐私数据上传。但假设——哪天 Charles 的某个版本被植入了一个后门(或者你用了一个破解版),

那么你在装 CA 之后,这个软件可以做的事情就是:

  • 每当你访问银行网站时,记录你的登录凭证
  • 每当你访问社交媒体时,记录你的私信内容
  • 把你所有的 HTTPS 流量元数据回传到某个服务器

为什么这比"不发 CA 的恶意软件"更危险?

因为不装 CA 的恶意软件只能在非加密流量中找东西(HTTP、DNS、IP 信息)。装了 CA 之后,它就有了 HTTPS 内容的完整视图。

但注意,Charles 的官方正版不会做这事。这里说的是"如果"有人用了破解版或恶意版本。


Superfish 事件——一个经典的警示

2015 年,联想被曝光在部分消费级笔记本电脑上预装了一款叫Superfish的广告软件。

Superfish 做了什么?

  1. 在用户系统里安装了自己的 CA 根证书
  2. 劫持所有 HTTPS 流量,在网页中注入广告
  3. 最致命的是:Superfish 给所有受影响的电脑安装的是完全相同的 CA 私钥

安全研究员花了一会儿功夫,提取出了这个 CA 的私钥。然后发布到了网上。

这意味着什么?

任何安装了 Superfish 的电脑,都相当于对全世界公开了自己的 HTTPS 流量。因为任何人都可以用这个私钥去解密 Superfish CA 签发的流量。所有电脑用的是同一个 CA,一个 CA 的私钥被公开,等同于所有装了 Superfish 的用户的 HTTPS 对全天下都是透明的。

联想的后果:被集体诉讼,赔偿了 350 万美元。Superfish 被微软标记为恶意软件,通过 Windows Defender 自动移除。

这个事件的教训:

  • 不要在用户电脑里装你自己的 CA(尤其是不告诉用户的时候)
  • 即使是装 CA 做 MITM(比如企业防火墙),也要用唯一的、妥善保护的 CA 私钥
  • 用户完全不知道"装一个 CA"意味着什么——他们看到的只是"不装这个证书你就没法上网"

企业级 MITM 的另一种规模

你可能没在中型以上公司待过,不知道企业 IT 部门做的事情。

很多公司会在员工电脑上安装企业的根证书。理由通常是 **“为了安全监控”**或"为了能正常使用公司内网"。

员工没得选,因为不装的话很多内部系统都打不开。

装了之后:

IT 部门可以通过 SSL 解密网关(比如 Zscaler、Symantec Web Security Service)看所有经过公司的网络流量。包括:

  • 你上班时刷的知乎内容
  • 你在淘宝买的东西
  • 你发的邮件(Webmail)
  • 你访问的个人网银(虽然不应该,但技术上确实能)

这里稍微说句公道话:大多数公司 IT 部门不会这么做——一是法律风险,二是他们没空看你每天刷什么。但也有公司确实会。如果不确定,可以假设公司里有人能看你的 HTTPS 流量,然后决定要不要在办公电脑上做私事。


既便如此,为什么我们还信任 CA 体系?

说了这么多恐怖的事,你可能想问:CA 体系是不是设计错了?

不是。CA 体系设计的目标是保护你的通信不被第三方攻击者破解。它不保护你主动安装恶意 CA 的情况——因为如果用户自己装了一个 CA,就相当于用户说"我信任这个东西"。

CA 体系的假设是:攻击者不能在你的系统里安装它的根证书。

所以:

  • 你在公共 WiFi 上连了一个假热点?→ CA 能防住(假热点没法给你装 CA)
  • 你的运营商劫持了你的 DNS?→ CA 能防住(运营商看不到你的加密内容)
  • 你下载了一个破解版抓包工具并装了它的 CA?→ CA防不住(你主动装了)

所以,CA 体系在所有"攻击者不能碰你系统"的场景下都管用。一旦攻击者能碰你的系统(或者你自己装了什么东西),安全的防线就转移到"你装的东西靠不靠谱"上了。

那问题就成了:你知道你装的那个 CA 是靠谱的吗?


下期预告:非对称加密的饼。RSA 和 ECDHE——用颜料混合的比喻把一个加密领域最难的概念讲清楚。

DumpAny 怎么做:正因为知道 CA 权限有多大,DumpAny 在设计上做了一些自我约束:抓包数据只在本地处理,不会上传到任何云端;CA 私钥只保存在本地,不随产品更新替换;所有解密后的数据在抓包会话结束后可以选择自动清理。这些设计不是为了炫技,而是为了让用户在信任 DumpAny 时不至于后悔。


装了抓包CA后

假TLS通道

真TLS通道

明文记录

浏览器

中间人/抓包工具

服务器

抓包数据

正常HTTPS

TLS加密通道

浏览器

服务器

正常

操作系统信任的根证书

正常CA

Superfish CA ← 预装在联想电脑里

假 google.com 证书

假 facebook.com 证书

假 bank.com 证书

真正网站证书


💬 聊几句:

  1. TLS 握手七步中,你觉得最关键的是哪一步?为什么?
  2. 你平时会去看 TLS 握手的细节吗?还是在用工具一键搞定?
  3. 如果有一天互联网的 CA 体系崩塌了,你觉得会发生什么?
  4. 你有没有遇到过证书相关的线上问题?怎么排查的?
http://www.cnnetsun.cn/news/3759706.html

相关文章:

  • STM32 Flash下载失败全解析:从保护机制到解锁实战
  • 样条插值:从线性到三次样条,平滑曲线构建原理与实践
  • Vue Router 4 实战:从基础到进阶,解决嵌套路由与状态管理难题
  • Windows跨平台存储方案:Btrfs驱动的专业部署指南
  • Carsim与Simulink联合仿真:从零搭建车辆控制算法验证环境
  • Turbo Intruder:告别无效并发测试,精准挖掘竞争条件漏洞
  • Python环境变量配置全解析:从PATH到虚拟环境,解决开发第一道门槛
  • 274.XC7V690电路设计的技巧
  • Java多线程中sleep()与wait()的核心区别与应用场景
  • AI智能改写开题报告的实用技巧与避坑指南
  • 2026最新:3款苹果视频转文字工具,亲测实用到底哪个更好用?
  • Python爬虫与情感分析实战:从豆瓣影评到数据可视化
  • DeepSeek Model1技术架构与性能提升分析
  • Android截屏录屏监听实战:兼容性方案与安全边界解析
  • 西瓜矮砧密植实操:手把手教你从零铺好水肥一体化系统
  • Midscene.js终极指南:如何用视觉AI实现零代码跨平台自动化测试
  • 计算机毕业设计之基于SpringBoot+Vue的智能健康管理系统的设计与实现
  • 2022年微信透明头像实现:安卓模拟器与ADB技术实战
  • openjudge1.6石头剪刀布
  • 基于K210与STM32MP157的智能垃圾分类系统:边缘AI与嵌入式Linux的协同设计
  • SEW-Movifit软件调试全攻略:从参数整定到运动控制优化
  • 5分钟搭建企业级电商聊天系统:MallChat让购物更有温度 [特殊字符][特殊字符]
  • Python图像处理入门:Pillow库从安装到实战应用
  • VC运行库缺失终极解决方案:VisualCppRedist AIO一站式部署指南
  • 把网络安全当成一座城堡来守,零基础的你也能快速上城墙
  • CAN FD协议深度解析:从经典CAN到高速通信的演进与实战
  • 差分放大电路设计:从共模抑制到电平偏移的工程实践
  • 电机控制电路原理图设计:从继电器到FOC的实战解析
  • 2026亚马逊卖家TRO应诉律所推荐大盘点:正规合规服务商选型指南与签约避坑FAQ全解析
  • MATLAB列车动力学仿真与MT-2缓冲器性能分析