安卓7.0以上手机写入系统证书

2022-02-15  本文已影响0人  八月欢喜

前言:

记录一场手动写入系统证书

前景

谷歌在安卓7.0修改了安全策略,用户添加的CA证书不能再用于安全连接,对于https传输的数据就抓取不到了,会显示<unknown>。
我的解决方法是将charles的CA证书安装进系统信任的证书目录下,这样在开启charles代理的时候,系统就会认为CA证书安全,从而可以获取https数据。

准备工作:

  1. 一台已root过的手机,我用的是小米5,开启开发者选项连接电脑。
  2. 下载charles证书,电脑端浏览器输入chls.pro/ssl即可下载,如果未下载也可以在charles>>help>>SSL Proxying>>Save Charles Root Certificate保存证书到本地文件夹

具体步骤:

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

用 “openssl x509 -inform PEM -subject_hash_old -in charles-ssl-proxying-certificate.pem”计算出hash值,并将后缀设为0


image.png

生成hash后,替换对应名称重新生成文件
//cer格式
openssl x509 -inform DER -text -in xxx.cer > 0dd2455e.0
//pem格式
openssl x509 -inform PEM -text -in xxx.pem > 0dd2455e.0

  1. 打开文件
    然后打开这个文件,将这个挪到文件的开头,然后保存


    image.png
  2. 挪动文件
    首先将文件<hash>.0 push到/sdcard/Download目录下(cmd 要进入文件目录下操作)
    然后复制到/system/etc/security/cacerts/目录下

  3. 重启,去系统证书看结果


    image.png

然后通过设置charles代理就可以查看到https的数据了。

上一篇下一篇

猜你喜欢

热点阅读