手机屏幕在搬运共享尿检机器的过程当中因公殉职,恰逢小米MIX2发布,被勾引了,入手了第一部小米手机。html
chls.pro/ssl
getssl.crt
证书
选择第二步骤获取到的证书,会弹窗提示
没有可安装的证书。
,换个姿式再来一次。
chls.pro/ssl
charles-proxy-ssl-proxying-certificate.pem
证书姿式正确。
注:以上两步骤能解决网页的问题,不能解决 android7+ 而且 微信7+ 的证书信任问题android
最近微信由体验版主动升级到了微信7.0,发现Charles代理请求的时候报错了:shell
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 的手机app
# 手机 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>
安装证书到安卓系统证书目录 /system/etc/security/cacerts
ui
# 安装命令 adb push <Certificate_Hash>.0 /system/etc/security/cacerts
启用证书google
# 开启步骤以小米新版本为例(如参考图倒数第二个即为咱们安装的 Charles 系统证书) 设置 > 更多设置 > 系统安全 > 加密与凭据 > 信任的凭据[系统]