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

发布于:2025-03-19 ⋅ 阅读:(61) ⋅ 点赞:(0)

用charles或fiddler抓app包的https接口必须要安装ca证书,才能正常抓包,

安卓7之前把ca证书安装到用户证书下即可,但安卓7以上只有系统级证书才能被信任,所以为了能正常抓包,需要把ca证书安装到系统证书下

流程:

  1. 下载OpenSSL
  2. 制作证书
  3. 导入到手机

准备工作:

  • 电脑安装了OpenSSL
  • 电脑安装了Charles(其他抓包工具也是一样的原理)
  • 一台已root手机(模拟器也可以,但部分app会检测)
  • 电脑安装adb

下载OpenSSL

根据您电脑的操作系统位数选择对应的版本下载

在这里插入图片描述

下载安装OpenSSL详细参照此文章Windows下载及安装OpenSSL_windows安装openssl-CSDN博客

没准备好的网上找吧,很多相关内容

Charles基础配置也到网上找吧,只说抓取https的配置

Proxy > SSL Proxying Settings > add *.* 或者*.443

制作证书

  1. 导出证书

Help → SSL Proxying → Save Charles Root Certificate...

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

2.计算hash值并修改名称

openssl x509 -inform PEM -subject_hash_old -in charles.pem 

将第一行类似 e9352f7c 的8位的hash值进行复制

重命名证书:

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

    ren charles.pem  e9352f7c.0

如果嫌麻烦, 可以直接复制下面的内容到一个文本文件,然后重命名成e9352f7c.0

-----BEGIN CERTIFICATE-----
MIIFiDCCBHCgAwIBAgIGAYDVFN3tMA0GCSqGSIb3DQEBCwUAMIHHMVkwVwYDVQQDDFBDaGFybGVz
IFByb3h5IEN1c3RvbSBSb290IENlcnRpZmljYXRlIChidWlsdCBvbiBERVNLVE9QLUJJTUtEQzEs
IDE4IOS6lOaciCAyMDIyKTEkMCIGA1UECwwbaHR0cDovL2NoYXJsZXNwcm94eS5jb20vc3NsMREw
DwYDVQQKDAhYSzcyIEx0ZDERMA8GA1UEBwwIQXVja2xhbmQxETAPBgNVBAgMCEF1Y2tsYW5kMQsw
CQYDVQQGEwJOWjAgFw0wMDAxMDEwMDAwMDBaGA8yMDUxMDcxNTAyNTIzNlowgccxWTBXBgNVBAMM
UENoYXJsZXMgUHJveHkgQ3VzdG9tIFJvb3QgQ2VydGlmaWNhdGUgKGJ1aWx0IG9uIERFU0tUT1At
QklNS0RDMSwgMTgg5LqU5pyIIDIwMjIpMSQwIgYDVQQLDBtodHRwOi8vY2hhcmxlc3Byb3h5LmNv
bS9zc2wxETAPBgNVBAoMCFhLNzIgTHRkMREwDwYDVQQHDAhBdWNrbGFuZDERMA8GA1UECAwIQXVj
a2xhbmQxCzAJBgNVBAYTAk5aMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjwCpakz1
zRLHxUDeXwLXwpspoU1y7ESpYQndaM1bO7/jj3BXVIOO9sYvmR2J9Dx4TRO03rj1ui3FhPkzQ5rU
QdtktCPd+ci6H4BuNxKB7c/g+fYKXDiHtZppRjyhrwJjv6r4u85RSy1YJrr65cWwB5r0vwETyyXA
LGpvW7gC4Z92eWdg6sAPLO0dYtnWDfr1M4ZlgSbqkb7ZRVqsWQg8Ctzg/UzoNhDCxMuAyt4vSjzT
QUgFxjsC3pBypFo293uIGl0Y8b+3RJPfWOnuvjPyDZCIAMrYfJyGuSTLj/0+APQnfjvbkpx6ZyTw
IiWecm2VlXf7MqcDGHAvIc7KMM5fCQIDAQABo4IBdDCCAXAwDwYDVR0TAQH/BAUwAwEB/zCCASwG
CWCGSAGG+EIBDQSCAR0TggEZVGhpcyBSb290IGNlcnRpZmljYXRlIHdhcyBnZW5lcmF0ZWQgYnkg
Q2hhcmxlcyBQcm94eSBmb3IgU1NMIFByb3h5aW5nLiBJZiB0aGlzIGNlcnRpZmljYXRlIGlzIHBh
cnQgb2YgYSBjZXJ0aWZpY2F0ZSBjaGFpbiwgdGhpcyBtZWFucyB0aGF0IHlvdSdyZSBicm93c2lu
ZyB0aHJvdWdoIENoYXJsZXMgUHJveHkgd2l0aCBTU0wgUHJveHlpbmcgZW5hYmxlZCBmb3IgdGhp
cyB3ZWJzaXRlLiBQbGVhc2Ugc2VlIGh0dHA6Ly9jaGFybGVzcHJveHkuY29tL3NzbCBmb3IgbW9y
ZSBpbmZvcm1hdGlvbi4wDgYDVR0PAQH/BAQDAgIEMB0GA1UdDgQWBBS70gNeLVjm0n7tDmtA9HCu
8mhsVzANBgkqhkiG9w0BAQsFAAOCAQEAZECh8ZPGoqa4L/Sircdgu8ctKcQT4pdoHUqlBFjWMAL6
7QKX6H5JpSxugfVx0kg4iSDW2hqllA4RGwnNI9sPlL7fQfBKVFseaIQ5zJcOPbCI4KRCYyZw/GIh
MQpezdGCHUcCcZkexW+WoGO7keMqVf1QV7fpq8q6wI2+PC+lJoqBmeXrUG4LwFCmRyKosxypKBOT
Y8eqFyXVhRPDptoYW9ZfIeFT8NFCGI3wgS7Yj98w1P54Td78plOdmYzSbq6ezjGRJ5L81BfL4LBr
IjYed7tdVBqWanl18nH3HJz+HPKpcI/KjF2KzjgWghHFU3Q+o0ZgYJTUBhNDO5+hDI42mA==
-----END CERTIFICATE-----

证书导入到手机

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

adb root
adb remount  # 用root用户重新挂载为rwx权限, 这两步必须在shell外部执行
adb push e9352f7c.0 /sdcard/
adb shell
su
mount -o rw,remount /system
mv /sdcard/e9352f7c.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/e9352f7c.0

注意:如果是模拟器,除了开启root, 可能还需要打开system分区的读写功能, 我试了雷电模拟器6.0.67需要开启,别的模拟器需要自己尝试

雷电模拟器:设置 → 性能设置 → 磁盘共享 → System.vmdk可写入

雷电模拟器:mount: ‘/system‘ not in /proc/mounts

报错:Read-only file system

报错原因:/system 是以只读的形式挂载上来的,所以无论你怎么chmod都无法修改其权限。

解决办法:重新挂载,挂载读写执行权限

gracelte:/ $ su
 
# 重新挂载/system 文件夹
:/ #  mount -o rw,remount /system
mount: '/system' not in /proc/mounts


报错:mount: '/system' not in /proc/mounts

# 在windows窗口运行以下命令,不要进到adb shell 里面运行
D:\platform-tools> adb root
 
# 解锁分区(需要升级到最新版本adb,才有disable-verity工具)
D:\platform-tools> adb disable-verity
 
# 重新挂载,没加权限 表示rwx全部挂上
D:\platform-tools> adb remount


 雷电9模拟器:

# 在windows窗口运行以下命令,不要进到adb shell 里面运行
D:\platform-tools> adb root
 
# 雷电模拟器,直接在设置打开磁盘写入功能
 
# 重新挂载,没加权限 表示rwx全部挂上
D:\platform-tools> adb remount
 
# 进入adb shell
D:platform-tools>adb shell

2021-03-10 Android '/system' not in /proc/mounts

1.修改chmod '/etc/hosts' to 100777: Read-only file system报错
2.执行mount -o rw,remount -t auto /system还是报错'/system' not in /proc/mounts
3.改为mount -o rw,remount -t auto /
验证成功,之后就可以修改hosts文件权限了

最后

可以到设置中查看是否有对应的证书, 不同手机位置可能不同

miui9开发版: 系统设置 → 更多设置 → 系统安全 → 加密与凭证 → 信任的凭据
雷电模拟器(Android9): 设置 → 安全性和位置信息 → 加密与凭证 → 信任的凭据

参考文章:

Android 7.1 以上机型Charles抓包解决办法

给Android7及以上的手机安装系统级证书,实现Fiddler或者其他程序的HTTPS的抓包

Android 7.0 之后抓包 unknown 和证书无效的解决方案(无需改代码)

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