Charles Proxy已配置信任证书仍无法拦截iOS请求报错如何解决?
原因判定
你遇到的情况大概率是iOS应用本身启用了*SSL证书锁定(SSL Pinning)*机制导致。该机制为应用开发阶段内置的安全策略,会强制校验服务端返回的证书是否和应用预存的证书/公钥哈希完全匹配,即便系统层面已经信任Charles根证书,应用层面不认可仍会直接终止SSL握手,和你收到的报错信息完全匹配。
可行解决方法
- 针对自有开发应用
直接在测试版本中临时关闭SSL Pinning校验逻辑,或将Charles根证书的公钥哈希加入应用信任白名单,重新打包安装后即可正常抓包。 - 针对第三方应用(无越狱设备)
可通过重打包注入的方式绕过校验,操作逻辑如下:- 获取对应应用的脱壳IPA安装包
- 用Objection、Frida等工具对IPA进行重打包,注入SSL Pinning绕过脚本
- 使用企业签名或个人测试证书对重打包后的IPA签名,安装到测试iPhone
- 启动应用后再开启Charles抓包即可
- 针对第三方应用(已越狱设备)
直接在Cydia/Sileo等插件商店安装「SSL Kill Switch 2」类全局校验禁用插件,安装完成后重启SpringBoard,无需额外配置即可正常抓包。
补充校验项(可先排查确认非配置问题)
虽然你已确认常规配置无误,仍可优先排查以下容易遗漏的设置:
- 确认iPhone「设置-通用-关于本机-证书信任设置」中,Charles根证书对应的信任开关已开启,仅安装证书未开启信任仍会触发握手失败
- 确认Charles的SSL Proxying配置中,已添加需要抓包的域名及443端口,未配置对应域名的SSL解析也会出现同类报错
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

