You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mitmproxy抓取安卓应用流量时SSL证书校验失败如何绕过?

解决方案

1. 修复系统根证书信任

安卓7.0及以上版本默认禁止第三方应用信任用户自行安装的CA证书,这是浏览器流量正常、应用报SSL错误的核心原因,需要将mitmproxy证书导入系统根证书目录:

  • 导出mitmproxy默认CA证书,默认路径为~/.mitmproxy/mitmproxy-ca-cert.pem
  • 执行命令生成安卓系统认可的证书文件名:
    openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem | head -1
    
  • 将证书重命名为上述命令输出的哈希值加.0后缀,例如输出为c8750f0d则文件名为c8750f0d.0
  • 将重命名后的证书存入安卓设备/system/etc/security/cacerts/目录,权限设置为644。如果设备已安装Magisk,可直接使用系统证书导入模块完成操作,无需修改系统分区。

2. 绕过SSL Pinning校验

亚马逊等应用内置了证书锁定逻辑,不会信任系统根目录下的自定义CA,需根据设备情况选择对应方案:

  • Root设备方案:安装LSPosed框架,启用「TrustMeAlready」或「通用SSL Unpinning」模块,选择需要抓包的应用开启规则即可绕过绝大多数应用的证书锁定。
  • 非Root设备方案:使用Frida动态注入工具,安卓端运行对应架构的frida-server,PC端安装frida-tools后调用公开的通用SSL Unpinning脚本,启动应用时注入即可生效,参考命令:
    frida -U -f 目标应用包名 -l ssl_unpin.js --no-pause
    
  • 加固应用方案:对上述方案无效的加固应用,可反编译APK删除内置的证书锁定逻辑、替换应用内置信任证书为mitmproxy证书后,重新签名安装即可。

3. mitmproxy侧配置优化

--ssl-insecure参数仅作用于mitmproxy与上游服务的SSL握手,不会解决应用端的证书校验问题,可添加以下参数优化兼容性:

  • 添加--set client_certs=None参数,避免mitmproxy向应用请求客户端证书减少握手失败
  • 若存在UDP/QUIC流量漏抓,可添加--quic参数开启mitmproxy的QUIC支持,或在安卓设备端禁用QUIC协议。

内容的提问来源于stack exchange,提问作者Sawan Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:15:03