抓包安卓7以上ca证书安装方法

本文档详细介绍了如何在Android 7及以上版本中安装CA证书的过程,包括证书的制作、导出、名称修改及通过ADB命令将证书导入手机系统的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题抓包安卓7以上ca证书安装方法

制作证书

导出证书

导出证书
把证书(.pem格式)导出到本地路径,名称为charles.pem, 并到该路径。
打开cmd

修改名称
openssl x509 -inform PEM -subject_hash_old -in cacert.pem 

将输出的类似 8efb32d4 的值进行复制

重命名证书

格式 哈希值.数字 , 后缀数字用来区分不同版本

 ren charles.pem  8efb32d4.0
导入到手机

执行以下adb命令将证书导入到/system/etc/security/cacerts/

adb root
adb remount
adb push 8efb32d4.0 /sdcard/
adb shell
su
mount -o rw,remount /system
mv /sdcard/8efb32d4.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/8efb32d4.0
reboot

到手机系统设置 > 更多设置 > 系统安全 > 加密与凭证 > 信任的凭证,在系统下找到刚才安装的证书(本人用的miui9开发版,不同手机位置可能不同)
激活证书

遇到的问题

mount -o rw,remount /system /system’ not in /proc/mounts
解决方案是挂载根目录(/)。之后,您可以写入/ system

mount -o rw,remount /    
chmod 777 /system 

remount of /system failed: Read-only file system原因及解决

安卓10 利用magisk 安装HttpCanary用户证书到系统证书

在使用 Charles 对 Android 手机进行 HTTPS 抓包时,即使成功安装证书但仍无法抓包,这通常与 Android 系统的安全机制有关。以下是可能导致问题的原因及解决方法: ### 1. Android 版本限制 从 Android 7.0(Nougat)开始,系统默认不再信任用户安装CA 证书用于拦截 HTTPS 流量,这是为了增强系统的安全性。这意味着即使安装了 Charles 的根证书,应用也不会信任该证书,导致无法解密 HTTPS 流量 [^1]。 **解决方法:** - 使用 `Just My Certificate` 模式进行抓包: - 在 Charles 中启用 **SSL Proxying** 功能。 - 添加需要抓包的应用所使用的域名到 **SSL Proxying Settings** 中。 - 在手机上设置代理后,Charles 将尝试动态生成中间证书来解密流量。 ### 2. 应用层网络堆栈限制(如 OkHttp、Network Security Config) 一些应用使用自己的网络库(如 OkHttp),并配置了网络安全策略(Network Security Config),明确指定只信任系统内置的证书,而不信任用户安装证书 [^1]。 **解决方法:** - 修改应用的信任管理器(需 Root 权限或反编译修改): - 可通过 Hook 或反编译方式修改其网络请求逻辑,使其信任 Charles 生成的证书。 - 使用工具如 **Frida** 或 **Xposed** 框架对应用运行时行为进行修改。 ### 3. 系统级证书存储未正确配置 对于某些 Android 设备,尤其是 Android 7.0 以上版本的模拟器或真机,可能需要将证书放入系统证书目录 `/system/etc/security/cacerts/`,并且设备必须处于可写模式 [^2]。 **解决方法:** - 在 Android Emulator 上操作如下: ```bash adb root adb remount adb push charles-proxy-ssl-proxying-certificate.pem /system/etc/security/cacerts/ adb reboot ``` - 确保证书文件名格式为 `<hash>.0`,其中 hash 是证书的 subject 哈希值,可通过 `openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem` 获取 [^2]。 ### 4. Charles 设置问题 如果 Charles 的 SSL Proxying 设置不正确,也可能导致无法捕获 HTTPS 请求。 **解决方法:** - 启用 Charles 的 **Enable SSL Proxying** 选项。 - 在 **Proxy > SSL Proxying Settings** 中添加目标主机和端口(例如 `*.example.com:443`)。 ### 5. 网络代理配置错误 确保 Android 手机已正确配置代理到运行 Charles 的电脑。 **解决方法:** - 进入 Wi-Fi 设置,手动设置代理为 Charles 所在电脑的 IP 地址和端口(默认是 8888)。 - 确认电脑防火墙允许该端口通信。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值