解决Charles https抓包显示<unknown>

用mac电脑开发安卓的都应该知道青花瓷吧~(不知道的都是小菜鸡,邪恶.jpg)

Charles类似Windows版的Fiddler(没用过Fiddler的都是小菜鸡中的战斗机,嘲笑.png),基本用法我就不说了,抓包的时候如果碰到https链接的地址,你会发现都是看不了内容的,都显示<unknown>
image.png
因为https是加密的,Charles需要配置证书才可以抓包。没配置证书之前,你开着Charles,Google也是用不了的,打开都是这鸟样子!
image.png

安装证书

电脑端

点击 Help -- SSL Proxying -- Install Charles Root Certificate

image.png

可以看到可怕的不信任红字,系统默认对Charles证书是不信任的,别慌,我们双击Charles证书
WechatIMG10.jpeg
点开左边的信任,选择始终信任,点关闭,弹出账户密码验证,填一下就改好了
WX20180806-151319@2x.png
回到证书列表可以看到Charles证书已经受信任了
WechatIMG11.jpeg

手机端

点击 Help -- SSL Proxying -- Install Charles Root Certificate on a Mobile Device or Remote Browser

image.png

弹出提示,手机wifi网络配置代理
WechatIMG13.jpeg

然后就可以在手机浏览器输入 chls.pro/ssl 下载证书
image.png

证书下载下来是一个 *.pem 的文件,我们需要重命名为 *.crt 文件,不然无法安装,有的浏览器直接下载下来就是 *.crt 文件,看运气~~ 然后进入手机设置安装,在此以小米6手机为例,点击 设置 -- 更多设置 -- 系统安全 -- 加密与凭据 -- 从存储设备安装 找到刚才浏览器下载证书的路径选择安装,为证书起个名字
WechatIMG14.png

点确定,输入账户密码完成安装,回到Charles
image.png

可以看到https链接下终于不再显示<unknown>了,而是感人的数据!

勾引.png

Android7.0以上证书无效问题解决

Android 7.0以后系统默认不信任用户证书,我们需要把证书加入到系统证书里去,具体操作如下:

# 手机必须root
adb root
# 禁止分区检测(disable-verity命令如果报找不到,就是adb版本太低了,下载最新版platform-tools)
adb disable-verity
# 重启
adb reboot
# 以 root 权限运行
adb root
# 重新挂载
adb remount
# 设置读写权限
adb shell mount -o rw,remount /system
# 获取证书Hash值(openssl 在windows环境下要自己安装https://slproweb.com/products/Win32OpenSSL.html,Mac自带)
openssl x509 -subject_hash_old -in <证书> 

如下运行命令后得到Hash值为 c8cb60a2,把证书重命名为 c8cb60a2.0Hash值.0

hash.png

最后

# 安装证书到安卓系统证书目录 /system/etc/security/cacerts
adb push c8cb60a2.0  /system/etc/security/cacerts

Android 7.0 之后抓包 unknown 和证书无效的解决方案

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

随手点个赞,长高十公分!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。