添加mitmproxy证书为安卓系统证书(模拟器亦可)
安装为系统证书有什么好处呢?(1)安装用户证书必须要设置开机密码,而且设置后就不能取消,除非先删掉所有的用户证书。如果安装为系统证书就不需要设置开机密码,自动化操作时更方便。
(2)Android 7以上版本APP默认不信任用户证书,只信任系统证书,安装为用户证书,对APP的HTTPS抓包会失败。安装为全局证书才能被所有APP信任,方可进行HTTPS抓包。
默认情况下,针对 Android 7.0+ (API level 24+) 的应用不再信任用户或管理员添加的CA证书来进行安全连接。(之前我们其实是将安全证书安装到安卓手机上作为用户信任安全证书,新版本如果APP开启了设置我们的代理请求会被认为是不安全的。)
1、准备一台已经
root
的手机mitmproxy
证书文件adb devices -l #显示所有已连接的设备详细信息
如果没有设备显示,便手动连接(夜神模拟器)
adb connect 127.0.0.1:62001 #默认端口
再次查看连接确认
#PEM或者DER格式均可。 #如果是PEM格式的: openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem -noout c8750f0d # 如果是DER格式的: openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer -noout c8750f0d #重命名 cp mitmproxy-ca-cert.pem c8750f0d.0 #传入手机 adb push c8750f0d.0 /sdcard
#获取手机的root权限 adb shell su #挂载系统目录为可写 mount -o rw,remount / #或者/system
mv /sdcard/c8750f0d.0 /system/etc/security/cacerts #修改证书权限 chmod 644 /system/etc/security/cacerts/c8750f0d.0
你可能会报错:\’/dev/block/dm-0\’ is read-only
在次确认你是root(#)状态下后,你可以执行以下命令来你查看的android的构建类型,在 adb shell
输入
cat /system/build.prop | grep build.type
如若return的信息显示你是开发版,继续往后看。
对于调试版本,用户必须首先 disable-verity
。
随后:
adb root adb disable-verity adb reboot adb remount adb shell mount -o rw,remount /system
至此,证书安装成功!
现在我们可以在系统证书里面找到mitmproxy证书了。手机连接mitmproxy代理进行抓包时系统也不会报”该证书来自非可信的授权中心“的错误了。
如果升级系统的话,可能需要重新拷入证书到系统目录。可以考虑将该证书做成magisk模块,这样升级系统后也无需重新拷入。