公司动态

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

📅 2026/7/31 4:09:02
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/123https://mail.google.com/mail/u/0/#inbox/xxxxxxxxhttps://www.yinlian.com/transfer?toxxxxamount10000SNI 只是域名。中间人拿到的是完整路径。2. 完整看到你所有 POST 请求的内容登录密码、支付金额、聊天内容、文件上传——解密之后全是明文的 JSON、表单数据、或者文件流。3. 完整看到服务器返回的所有数据你的个人资料、你的订单列表、你的聊天记录、你刷到的推荐内容——全部可见。4. 看到所有的 Cookie、Session Token、API Key一个 https 请求在 Header 里附带的Cookie: sessionidxxxx——中间人拿到了可以直接拿去冒充你登录。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 做了什么在用户系统里安装了自己的 CA 根证书劫持所有 HTTPS 流量在网页中注入广告最致命的是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通道明文记录浏览器中间人/抓包工具服务器抓包数据正常HTTPSTLS加密通道浏览器服务器正常操作系统信任的根证书正常CASuperfish CA ← 预装在联想电脑里假 google.com 证书假 facebook.com 证书假 bank.com 证书真正网站证书 聊几句TLS 握手七步中你觉得最关键的是哪一步为什么你平时会去看 TLS 握手的细节吗还是在用工具一键搞定如果有一天互联网的 CA 体系崩塌了你觉得会发生什么你有没有遇到过证书相关的线上问题怎么排查的