【简记】使用charles抓微信小程序配置htts证书的前提条件
说明
昨天晚上,朋友找我帮忙,说为了了解公司项目的业务,需要对微信小程序进行抓包,配置好久也不能用,让我帮忙看看,后来一步步配置发现了好多坑,所以记录一下,防止再踩
条件
安卓手机与苹果手机的微信信任度不一样,以下区分说明下
安卓手机
场景:
- 安卓 7.x 以下,任意微信版本均信任系统与用户证书,只需要访问charles下载证书地址,并安装证书即可
- 安卓 7.x && 微信 7.0 以下版本,信任系统与用户证书,仅需安装证书
- 安卓 7.x && 微信 7.0 以上版本,只信任系统证书,需要root,添加证书到系统证书目录中
使用root添加证书到系统目录方式,使用adb推送
1.手机端挂上charles代理,并使用usb连接手机,使用文件传输模式,手机设置进入开发者模式,开启adb调试并授权
2.手机端访问<chls.pro/ssl>,下载证书到手机,将证书复制到电脑上
3.计算证书hash值,并重命名,格式为:<Certificate_Hash>.<Number>
openssl x509 -noout -subject_hash_old -in <Certificate_File>
举例:
将输出的 hash 值,添加.0
, 组合成证书文件新名称,修改证书文件名
.0
的作用是防止hash冲突,如果冲突了,就将0递增1位,依次类推。
4.使用 adb 推送到手机目录中
adb root
adb remount
adb disable-verity
adb push <Renamed_Certificate_File> /system/etc/security/cacerts
例:
adb push b1bfb5ff.0 /system/etc/security/cacerts
不使用adb,通过RootExplorer复制改名后的证书到
/system/etc/security/cacerts
,并修改文件权限644
,即rw-r--r--
,如果没立即生效,重启手机
5.抓包验证
苹果手机
- 安装证书,直接可用。IOS 12需要设置 通用-关于本机-证书信任设置 中开启证书
可行方案
- 使用安卓7以下版本系统,不要求微信版本
- 使用安卓7以上版本系统,安装旧版本微信(7.0 以下)
- 使用安卓7以上版本系统,使用 root 权限将证书复制到系统证书目录中
- 有苹果手机的直接安装证书使用
- 没有苹果手机,还不想折腾的,向公司测试申请苹果手机 😄