将Mitmproxy证书导入成安卓的系统证书

本文档详细介绍了如何将Mitmproxy证书导入到Android系统证书中,包括为何要安装为系统证书的原因,如避免开机密码设置和解决Android 7.0+应用不信任用户证书的问题。步骤包括获取证书文件,将其重命名为系统证书规范的格式,并在已获得root权限的手机上进行安装,确保HTTPS抓包成功。

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

该文章通过借鉴:https://www.cnblogs.com/oboth-zl ,在配置过程中发现的问题,重新整理的内容。

Android证书分为“用户证书”和“系统证书”两种,在设置->安全->"查看安全证书"列表中,可以看到“系统”和“用户”两个列表。用户通过浏览器下载安装或者通过WLAN高级设置安装的证书均为用户证书。

安装为系统证书有什么好处呢?

(1)安装用户证书必须要设置开机密码,而且设置后就不能取消,除非先删掉所有的用户证书。如果安装为系统证书就不需要设置开机密码,自动化操作时更方便。

(2)Android 7以上版本APP默认不信任用户证书,只信任系统证书,安装为用户证书,对APP的HTTPS抓包会失败。安装为全局证书才能被所有APP信任,方可进行HTTPS抓包。

默认情况下,针对 Android 7.0+ (API level 24+) 的应用不再信任用户或管理员添加的CA证书来进行安全连接。(之前我们其实是将安全证书安装到安卓手机上作为用户信任安全证书,新版本如果APP开启了设置我们的代理请求会被认为是不安全的。)

Android的系统证书的存储位置是/system/etc/security/cacerts,证书文件必须是PEM格式,而且文件命名必须符合系统证书规范。
1、准备一台已经 root的手机

2、准备mitmproxy证书文件:

#在mitmproxy安装完成后,输入以下命令,运行mitmproxy生成证书文件

mitmdump

Windows 或者Linux 在mitmdump第一次运行会在用户目录生成对应的文件。

### 在macOS上安装mitmproxy证书的指南 在macOS上安装mitmproxy证书的过程涉及多个步骤,包括生证书、将证书导入系统信任库以及确保应用程序能够识别并信任该证书。以下是详细的说明: #### 1. 启动mitmproxy服务 首先需要启动mitmproxy服务以生证书。可以通过以下命令启动mitmweb[^1]: ```bash mitmweb ``` 启动后,mitmproxy会在控制台输出类似以下信息: ``` Web server listening at http://127.0.0.1:8081/ Proxy server listening at http://*:8080 ``` #### 2. 下载mitmproxy证书 打开浏览器访问`http://mitm.it/`,此页面由mitmproxy自动生,提供适用于不同设备和操作系统证书下载链接。选择适合macOS的格式(通常为`.cer`文件)并下载。 #### 3. 导入证书到macOS系统 下载完后,双击证书文件以打开“钥匙串访问”应用。在弹出的窗口中,选择“系统”钥匙串,并输入管理员密码确认。完导入后,需设置证书的信任状态[^2]。 #### 4. 设置证书信任 在“钥匙串访问”中找到名为`mitmproxy`的证书,右键选择“获取信息”。展开“信任”部分,勾选“始终信任”选项。随后,点击顶部菜单栏中的“文件 -> 更新钥匙串设置”,并重新输入管理员密码以保存更改。 #### 5. 配置模拟器或真实设备 如果目标是抓取安卓模拟器或真实设备上的流量,则需要进一步配置设备。具体步骤如下: - 确保设备与macOS主机在同一网络下。 - 获取macOS主机的IP地址(例如`192.168.1.22`),通过命令`ifconfig`查看[^1]。 - 在设备浏览器中访问`http://<主机IP>:8080`,下载并安装mitmproxy证书- 对于安卓设备,可能需要额外步骤来启用对用户CA的信任,例如修改`Android Debug Bridge (ADB)`设置[^2]。 #### 6. 测试证书有效性 最后,使用浏览器或其他应用程序测试是否能够正常通过代理发送HTTPS请求。如果出现证书错误提示,检查是否正确完了上述所有步骤。 ```python # 示例代码:验证mitmproxy版本 import subprocess version_info = subprocess.check_output(['mitmdump', '--version']).decode('utf-8') print(version_info) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值