在 Android 上安装系统 CA 证书
优质
小牛编辑
131浏览
2023-12-01
在Android上安装系统CA证书
从Android 7开始,除非将应用程序配置为使用用户证书,否则它们将忽略用户证书。由于大多数应用程序未明确选择使用用户证书,因此我们需要将mitmproxy CA证书放置在系统证书存储中,以避免不得不打补丁我们要监视的每个应用程序。
请注意,应用程序可以决定忽略系统证书存储,并维护自己的CA证书。在这种情况下,您必须修补该应用程序。
1.先决条件
- 来自
Android SDK
的模拟器,代理设置指向mitmproxy
- Mitmproxy CA证书
- 通常位于
~/.mitmproxy/mitmproxy-ca-cert.cer
- 如果文件夹为空或不存在,请运行
mitmproxy
以生成证书
- 通常位于
2.重命名证书
输入您的证书文件夹
cd ~/.mitmproxy/
- Android中的CA证书以其哈希名称存储,扩展名为“ 0”
- 现在生成证书的哈希值
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
假设输出为
c8450d0d
现在我们可以复制mitmproxy-ca-cert.cer
到c8450d0d.0
并且我们的系统证书可以使用了
cp mitmproxy-ca-cert.cer c8450d0d.0
3.将证书插入系统证书库
请注意,Android 9(API LEVEL 28)用于测试以下步骤,并且emulator
可执行文件位于Android SDK中
- 启动您的android模拟器。
- 取得您的AVD清单 emulator -list-avds
- 确保使用该-writable-system选项。否则将无法写入/system
- 请记住,在不带-writable-systemoption的情况下启动时,仿真器将加载干净的系统映像。
- 这意味着您必须始终使用-writable-system选项启动仿真器才能使用证书
emulator -avd <avd_name_here> -writable-system
- 以root身份重新启动adb
adb root
- 取得/system装置上的写入权限
- 在早期版本
(API LEVEL <28)
的Android
中,您必须使用adb shell "mount -o rw,remount /system"
adb shell "mount -o rw,remount /"
- 将您的证书推送到系统证书存储并设置文件权限
adb push c8450d0d.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/c8450d0d.0"
4.重新启动设备并享受解密的TLS流量
- 重新启动您的设备。
- 您的CA证书现在应该是系统信任的
adb reboot
切记:您始终必须使用该
-writable-system
选项启动仿真器才能使用您的证书
- 您的CA证书现在应该是系统信任的