Android7以上Charles抓包Https显示Unkown

  1. 简述

    小米MIUI10升级至MIUI11,发现之前能够抓包的Charles无法抓包,显示unknown,后来经过测试发现在Android 7以上部分机型会出现这种问题,目测应该是Android对权限进一部进行了把控,后经过几篇文章发现了解决办法,现告知于大家,该方法必须拥有root权限

  2. 工具准备
    • OpenSSL
    • AndroidSDK 或 单一adb
  3. 开始
    • 保存pem证书至本地

    • 计算证书hash

      1
      $ openssl x509 -subject_hash_old -in <pem证书>

      获取到hash值并将其命名为 hash.0

    • 移动 hash.0 证书放至系统证书目录,Android 系统证书目录:/system/etc/security/cacerts/

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      //判断手机是否链接,手机需要开启开发者模式 USB调试
      $ adb devices

      //将证书拷贝到系统存储目录下,也可以手动拷贝
      $ adb push hash.0 /sdcard/

      //进入安卓shell
      $ adb shell

      //切换至root用户
      $ su

      //将证书移动至系统证书目录下
      //这一步可能会报权限错误
      //原因是没有权限,解决方案是 root用户下,执行 mount -o rw,remount /system
      $ mv /sdcard/hash.0 /system/etc/security/cacerts/

      //赋予证书权限
      $ chmod 644 hash.0

      //证书文件所有组更改为root
      $ chown :root hash.0

      //重启手机
      $ reboot
    • 打开手机,系统设置–>更多设置–>系统安全–>信任的凭据

    • 检查是否配置成功

参考文章: