安装代理证书到安卓系统目录

276 阅读2分钟

前提条件:安卓设备需要root,并能通过adb命令进行连接(使用模拟器)

前置步骤

  1. 将抓包工具的证书文件转化为安卓系统证书的格式

  2. 下载或导出本地抓包工具的证书文件openssl x509 -inform pem -subject_hash_old -in charles.pem -noout

  3. 获取有效的系统证书文件名

# Fiddler证书使用命令 
openssl x509 -inform der -subject_hash_old -in FiddlerRoot.cer -noout 
# charles证书使用命令 openssl x509 -inform pem -subject_hash_old -in charles.pem -noout
  1. 使用上述命令会返回一串字符,该字符为系统证书的名称(此处假设输出字符串为:269953fb)
  2. 将证书转换为有效的系统证书
# Fiddler证书使用命令 
openssl x509 -inform der -in FiddlerRoot.cer -out 269953fb.0 
# charles证书使用命令 
openssl x509 -inform PEM -in charles.pem -out 269953fb.0
  1. 将证书复制到模拟器设备系统证书目录下并修改权限
# 先将证书文件Push到设备的/sdcard目录(需要修改证书名称为实际名称) 
adb push 269953fb.0 /sdcard 
# 安卓7模拟器执行下面代码(需要修改证书名称为实际名称) 
adb shell "su -c 'mount -o rw,remount /system;cp /sdcard/269953fb.0 /system/etc/security/cacerts;chmod 644 /system/etc/security/cacerts/269953fb.0;'" 
# 安卓9模拟器执行下面代码(需要修改证书名称为实际名称) 
adb root adb remount adb shell "su -c 'mount -o rw; cp /sdcard/c336cef6.0 /system/etc/security/cacerts;chmod 644 /system/etc/security/cacerts/c336cef6.0;'"
  1. 设置代理
# 接下来通过如下一行命令,即可为你的安卓设备设置全局代理(代理地址需要修改为实际的代理地址): 
adb shell settings put global http_proxy 192.168.67.70:8888 
# 查看你上边设置代理是否成功,可以使用如下命令: 
adb shell settings get global http_proxy 
# 如果想取消上述代理设置,则使用如下命令: 
adb shell settings put global http_proxy :0

注意:通过此方式设置的代理,可能部分APP会出现认证或连接失败的情况(目前已知的是Facebook) 出现此情况时,可以临时使用adb命令,取消代理,再进行相关的操作