证书导入手机 系统证书

谷歌在安卓7.0修改了安全策略,用户添加的CA证书不能再用于安全连接,对于https传输的数据就抓取不到了,会显示<unknown>。

我的解决方法是将charles的CA证书安装进系统信任的证书目录下,这样在开启charles代理的时候,系统就会认为CA证书安全,从而可以获取https数据。

准备工作:

一台已root过的手机,我用的是小米5,开启开发者选项连接电脑。

下载charles证书,电脑端浏览器输入chls.pro/ssl即可下载,如果未下载也可以在charles>>help>>SSL Proxying>>Save Charles Root Certificate保存证书到本地文件夹

具体步骤:

1.重命名证书

安卓系统的安全证书在 /system/etc/security/cacerts/目录下,进入adb shell,打开目录就能看到这些证书文件,文件名是Hash值加数字后缀。后缀名的数字是为了防止文件名冲突的,比如如果两个证书算出的Hash值是一样的话,那么一个证书的后缀名数字可以设置成0,而另一个证书的后缀名数字可以设置成1

image

用 “openssl x509 -subject_hash_old -in 证书名加后缀”计算出hash值,并将后缀设为0

[图片上传失败...(image-62ac87-1622985119695)]

修改后的文件为<hash>.0

2.将证书传到系统证书目录下

首先将文件<hash>.0 push到/sdcard/Download目录下(cmd 要进入文件目录下操作)

adb push <hash>.0 /sdcard/Download

然后复制到/system/etc/security/cacerts/目录下

adb shell

su

cp /sdcard/Download/<hash>.0 /system/etc/security/cacerts/

然后修改权限

<pre class="prettyprint prettyprinted" style="margin: 0px; padding: 0px; overflow: auto;">chmod 644 /system/etc/security/cacerts/<hash>.0</pre>

如果出现//<hash>.0:Read-only file system这个警告,这是因为system文件为只读,需要将其挂载为可读写。

一般的解决方法是

mount -o rw,remount /system

修改system读写权限,然后再进行复制操作

如果修改了之后还是提示Read-only file system,还有方法

adb root

adb disable-verity

adb reboot #手机会重启,不用关闭cmd窗口,手机可能需要拔掉数据写重新连接

adb root

adb shell

mount -o rw,remount /system #再次进行修改

然后就可以进行复制操作了。(我是遇到了这种情况,这个方法可行)

复制完之后输入reboot重启

 adb shell #连接手机进入shell模式

#su root #如果你不root权限可以试着这个一般都是root

cd /data/misc/user/0/cacerts-added #移动至于用户证书目录

mount -o remount,rw /system #将系统证书目录权限改成可读可写就可以移动文件不然不行
### 这里失败的话  可以试试  mount -o rw,remount -t auto /

cp * /etc/security/cacerts/ #这里可以使用cp也可以使用mv

mount -o remount,ro /system #移动完之后记得把权限改回只读

https://www.cnblogs.com/szj22233060/p/11393588.html

https://blog.zhangkunzhi.com/2020/02/10/%E5%AE%89%E5%8D%93%E5%AF%BC%E5%85%A5%E8%AF%81%E4%B9%A6%E5%88%B0%E7%B3%BB%E7%BB%9F%E7%9B%AE%E5%BD%95%E4%B8%AD/index.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容