Charles 开启 SSL Proxy 后为什么还是抓不到 HTTPS 请求?

南宫东焕 阅读 73

我用 Charles 抓包,已经安装了根证书,也在 SSL Proxying Settings 里加了 *:443,但手机上的 App 发的 HTTPS 请求还是显示为 CONNECT tunnel,看不到具体请求内容。这是哪里没配对?

手机和电脑在同一个 Wi-Fi 下,代理设置没问题,HTTP 请求能正常抓到,就 HTTPS 不行。是不是还要在手机上额外信任证书?

我来解答 赞 10 收藏
二维码
手机扫码查看
1 条解答
W″树潼
你这种情况大概率是手机没手动信任证书导致的。Charles 的根证书安装了不代表系统就信任它,尤其是 Android 7+ 和 iOS 10.3+ 以后,系统要求你手动把证书设置为“受信任的凭据”。

具体操作:

Android 上:
- 进入设置 → 安全 → 加密与凭据 → 信任的凭据 → 选择“用户”标签页
- 找到 Charles Root Certificate,点进去把“为 VPN 和应用信任此证书”勾上(有的机型是“信任用于网络识别”之类的表述)

iOS 上:
- 设置 → 通用 → 关于本机 → 证书信任设置
- 找到 Charles Root Certificate,把它完全打开,然后开关拉成绿色(信任)

改完记得重启 App,有些 App 会缓存 TLS 连接,重启后才能重新握手走 Charles 的代理。

另外确认下 Charles 里 SSL Proxying Settings 里是不是真的写了 *:443(不是 *:80),还有别忘了点右下角的“Enable SSL Proxying”主开关。

要是还抓不到,用浏览器访问个 HTTPS 站点试试(比如 https://example.com),看 Charles 能不能解出来,能的话就是 App 用了证书锁定(certificate pinning),那就得加 mitm 抓包方案了,比如用 frida 或者改 app。
点赞 4
2026-02-24 04:00