小米系列手机不能安装Charles证书怎么办

15

手机屏幕在搬运共享尿检机器的过程中因公殉职,恰逢小米MIX2发布,被勾引了,入手了第一部小米手机。

安装ssl证书

失败现场

  • 按照Charles的提示,手机打开 chls.pro/ssl
  • 小米通过自带浏览器(QQ浏览器或者其它浏览器未测)下载得到一个 getssl.crt 证书
  • 设置 > 更多设置(系统和设备) > 系统安全 > 从存储设备安装
选择第二步骤获取到的证书,会弹窗提示 没有可安装的证书。,换个姿势再来一次。

再试一次

  • 按照Charles的提示,设置好 Proxy->Mac Proxy(Windows同理设置启用本机器代理服务),PC打开 chls.pro/ssl
  • 下载得到一个 charles-proxy-ssl-proxying-certificate.pem 证书
  • 传送到手机(姿势自选)
  • 设置 > 更多设置(系统和设备) > 系统安全 > 从存储设备安装
姿势正确。

其他问题(2019/01/14)

You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.

  • 打开Charles,Help->SSL Proxying->Install Charles Root Certificate
  • 双击带叉的Charles证书,设置信任证书

注:以上两步骤能解决网页的问题,不能解决 android7+ 并且 微信7+ 的证书信任问题

安卓版本7+并且微信版本7+ 使用Charles也不能代理请求怎么办?

最近微信由体验版主动升级到了微信7.0,发现Charles代理请求的时候报错了:

request:fail ssl hand shake error

究其缘由是微信调整了如下安全证书策略:

策略 安卓版本 微信版本 是否可以代理
A 7- 任意版本
B 7+ 7-
C 7+ 7+

为什么策略 C 不能代理了?
参考资料提到默认情况下,针对 Android 7.0 (API level 24) 的应用不再信任用户或管理员添加的CA证书来进行安全连接。(之前我们其实是将安全证书安装到安卓手机上作为用户信任安全证书,新版本如果APP开启了设置我们的代理请求会被认为是不安全的。)

如何在安卓7.0以及以上版本代理?

  • 准备一台已经 root 的手机

    # 手机 root 方法参考各手机 root 教程,小米手机在 Windows 电脑下载[解锁工具](//www.miui.com/unlock/index.html),开启 fastboot 模式,手机端启用 root 权限(注意备份好手机上的数据到电脑)
    # 以小米手机为例来开启 root 权限后设置 /system 目录为读写
    # 以 root 权限执行
    adb root
    # 解决目录 read only 关键命令行
    adb disable-verity
    # 重启
    adb reboot
    # 以 root 权限运行
    adb root
    # 重新挂载
    adb remount
    # 设置读写
    adb shell mount -o rw,remount /system
  • 准备 Charles 证书文件

    # 以下执行命令都是以证书文件在当前目录为前提
    # 获取证书步骤
    Help -> SSL Proxying -> Save Charles Root Certificate...
    # 计算 Certificate_Hash 命令
    openssl x509 -subject_hash_old -in <Certificate_File>
    # 重命名 `<Certificate_File>` 为 `<Certificate_Hash.0>`
    mv <Certificate_File> <Certificate_Hash.0>

    准备 Charles 证书文件

  • 安装证书到安卓系统证书目录 /system/etc/security/cacerts

    # 安装命令
    adb push <Certificate_Hash>.0 /system/etc/security/cacerts

    上传证书

  • 启用证书

    # 开启步骤以小米新版本为例(如参考图倒数第二个即为我们安装的 Charles 系统证书)
    设置 > 更多设置 > 系统安全 > 加密与凭据 > 信任的凭据[系统]

    图片描述


如果觉得我的文章对你有用,请随意赞赏

你可能感兴趣的

13 条评论
huguangju · 2018-01-25

用小米6系统自带的浏览器下载下来的是 getssl.crt 文件,无法安装,换了一个第三方浏览器,下载下来才是 charles-proxy-ssl-proxying-certificate.pem

+1 回复

0

正解

ouer1994 · 2018-05-31
小丸子 · 2018-09-17

PC打开 chls.pro/ssl 显示的是Charles官网,如何下载证书呢?

+1 回复

scott1024 · 2018-01-04

找到一个能用的,谢谢分享~

回复

墨鉞 · 2018-01-15

zan

回复

Jioby · 4月25日

能正常安装证书,但安装到【用户】里,而不是【系统】证书,这个有谁碰到过没

回复

0

直接安装都是安装到用户下的,要安装到系统下需要root权限,操作按照文章末尾介绍的操作,过程略复杂。

unofficial 作者 · 4月25日
0

@unofficial 好的,谢谢老哥

Jioby · 4月25日
0

不root的手机不能使用吗?

nore · 11月14日
unofficial 作者 · 9月25日

回复

dadaa · 10月10日

安装上了,但是还是提示 该网站安全证书有问题。怎么把?

回复

0

请求都走代理软件来了吗?检查一下手机上的证书安装好了吗?

unofficial 作者 · 10月11日
载入中...