Android7及以上安装系统证书

AffettoIris 2023-10-9 2,588 10/9

前言

从Android7.0以后系统不再信任用户安装的证书,导致我们在使用一些网络调试工具时非常不便。

Android7及以上安装系统证书

解决方案:把Charles证书安装成系统证书。

首先安卓需要开启root,对于逍遥模拟器,root在:

Android7及以上安装系统证书

其次电脑上还要安装adb工具、安装openssl

adb全称 Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互,类似于我们使用xshell工具与Linux服务器进行连接。

参考文章

这两篇文章都有小错误,不然我也不至于单独写下这篇整合完善版了...

安装Adb工具

由于我这里使用的是模拟器,通常模拟器安装后自带adb连接工具,就没必要单独安装了。如下图是我的逍遥模拟器安装目录,我在此找到了adb.exe

Android7及以上安装系统证书

但如果你使用的是手机,那你仍然需要给电脑安装adb.exe,下面是一个简单的安装步骤:

  1. 首先下载platform-tools

  2. 解压得到如下文件,有一个adb.exe

Android7及以上安装系统证书

安装Openssl

(我用下面的教程安装的openssl,感觉有问题,版本也老:

Android7及以上安装系统证书

,放弃了。但是我的anaconda3有不报错的openssl,我用的anaconda3的openssl

Android7及以上安装系统证书)

下载openssl便捷版

Android7及以上安装系统证书

下载第一个用户版本即可,这是一个exe文件,所以下载后直接双击下一步安装,过程省略…

正常安装完毕后,我们打开cmd命令行工具,输入:openssl version,如果有出现版本号,说明安装没问题,如果没有出现或者提示不是有效的命令时,可能是环境变量没有配置,下面是安装后正常的命令显示:

Android7及以上安装系统证书

到此openssl就已经安装完成。

下载Charles的证书到电脑上

此过程省略,各抓包工具的证书下载教程,见我的笔记的《技术栈 - CTF - 小迪安全2022 - 第3天》的小标题“安装抓包软件的证书”,或者百度下。

Android7及以上安装系统证书

用Openssl计算证书的Hash值

打开anaconda3终端,切换到刚才保存证书的目录,准备计算刚刚保存的证书文件的hash值:

# .cer格式证书
openssl x509 -inform DER -subject_hash_old -in 证书名如charles-ssl-proxying-certificate.cer

# .pem格式证书
openssl x509 -inform PEM -subject_hash_old -in 证书名如charles-ssl-proxying-certificate.pem

计算完成会在终端显示出如下内容:

Android7及以上安装系统证书

885fd512.0就是此证书在安卓手机的证书名字。

生成安卓手机预设格式证书文件:

# .cer格式证书
openssl x509 -inform DER -text -in 证书名如charles-ssl-proxying-certificate.cer > 885fd512.0

# .pem格式证书
openssl x509 -inform PEM -text -in 证书名如charles-ssl-proxying-certificate.pem > 885fd512.0

此时当前文件夹下多出个885fd512.0文件:

Android7及以上安装系统证书

打开该文件, 将终端的 -----BEGIN CERTIFICATE----- * * -----END CERTIFICATE----- 一整段话复制到整个文件的开头位置

Android7及以上安装系统证书

使用Adb工具移植证书到安卓系统证书列表

在adb.exe所在目录打开终端,准备用adb工具将电脑上的证书文件 885fd512.0安装到安卓手机的 /system/etc/security/cacerts目录里(此目录就是安卓手机系统证书的目录),具体步骤如下:

先用adb devices查看当前连接的所有设备,看看电脑是否连接了模拟器上的安卓:

Android7及以上安装系统证书

1.adb push 885fd512.0 /sdcard

2.adb shell

  1. su

  2. mount -o rw,remount /system

    这一步在雷电模拟器失败了,一直报错/system不在mount挂载区或者根目录/是read_only,解决:

    Android7及以上安装系统证书

    然后改把根目录挂载为可读写mount -o rw,remount /,然后chmod 777 /system

  3. cp /sdcard/885fd512.0 /system/etc/security/cacerts/

  4. chmod 644 /system/etc/security/cacerts/885fd512.0

重启手机并进行查看

reboot

然后去安卓手机系统证书的目录查看(adb的shell命令有点仿linux)

Android7及以上安装系统证书

发现885fd512.0已经加入到系统证书目录中!

实战验证 - 抓APP数据包

模拟器里打开抖音火山版

Android7及以上安装系统证书      Android7及以上安装系统证书

安装证书很成功!

模拟器里的浏览器有单独的CA信任列表

尽管我在安卓系统里将Charles证书设置成了系统证书,但是模拟器里浏览器访问https网站,依旧报错“连接不安全,是否添加该站点为例外以继续访问”。我们再给浏览器单独安装下Charles证书即可。

- THE END -

AffettoIris

11月23日17:59

最后修改:2023年11月23日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论