DOC软件文档百宝箱

HTTPS 抓包全是密文怎么办

抓包列表里明明有请求,HTTPS 的响应体却是一串乱码——这不是抓包失败,而是解密那一环没成。这篇按排查顺序讲清楚原因和出路。

先确认:抓包本身是通的

列表里有条目、URL 和方法都看得到,说明本地 VPN 这条路没问题,流量确实被接住了。剩下的唯一问题是:内容被 TLS 加密了,而抓包工具手里没有让应用信任的钥匙。

原因:证书没被系统信任

抓包工具解 HTTPS 的方式是「中间人」:它本地生成一张自己的根证书,替每个 HTTPS 站点现场签证书。手机信了这张根证书,才肯把解出来的明文交给工具展示。

问题出在 Android 7.0 的规则变化:系统默认不再信任「用户自己安装」的 CA 证书,应用只认出厂自带的系统证书。于是出现「证书装了、设置里也显示已安装,抓出来还是密文」的典型现象——不是没装上,是应用不认。

按情况选出路

你的设备建议
Android 6.x 及以下装成用户证书就够,装完直接可用
Android 7.0+,有 Root把根证书移进系统证书目录(/system/etc/security/cacerts/),一步到位;Magisk 模块是常见做法
Android 7.0+,无 Root主流模拟器都带 Root 开关,在模拟器里做一次系统证书;真机不想动系统,就只抓信任用户证书的应用(比如自己开发调试的那个)

装完系统证书后重启抓包应用再验证:用手机浏览器访问任意 HTTPS 站点,能看到 URL、请求头、响应体明文就是成了。

两个常见误判

工具层面还有不少能调的:目标应用过滤、九种查看器、断点与注入,这些在HttpCanary 介绍站里有更完整的整理;证书导出的具体入口也可以在安卓版下载与安装页面的第 5 步里看到。

延伸阅读

同站更多