红米Note8 Pro安装Charles证书指南:HTTPS抓包与MIUI配置详解

📅 发布时间:2026/10/19 20:07:34
红米Note8 Pro安装Charles证书指南:HTTPS抓包与MIUI配置详解
1. 先把这个需求背景说清楚在红米Note 8 Pro上装Charles证书这是很多做移动开发、接口调试、弱网测试甚至逆向分析的同学迟早会碰上的活。Charles本质上是个HTTP中间人代理工具核心作用就是让你看到手机App发出的每个请求是什么样、返回了什么数据。我们平时在电脑浏览器里抓包很简单因为Charles可以直接设置系统代理但手机上要抓HTTPS包就必须让手机“信任”Charles的根证书否则所有加密的流量在Charles眼里都是一团乱码。为什么专门要讲红米Note 8 Pro因为这个机器的系统和常见原生安卓机不太一样它跑的是MIUIAndroid版本从9到11都有证书安装入口、权限弹窗、系统安全策略都有自己的一套逻辑。很多人在电脑上配置得好好的一到手机端就卡住要么证书下载不下来要么下载了装不上要么装上了依然抓不到包。这篇文章就是把我实际在红米Note 8 Pro上走过的每一个坑、验证过的每一条路径整理出来新手可以直接跟着操作老手也可以对照排查一下自己的问题出在哪。需要说明清楚一点这里说的代理和证书安装全部是开发调试场景下的合法操作Charles也只是个流量分析工具类似的服务端账号、App测试包这些都是你自己有权限去调试的东西不要拿去做任何越权的事。2. 安装证书前必须懂的三个核心原理2.1 HTTPS在Charles眼里是怎么被“打开”的很多人装证书装了很多次但始终没搞明白为什么装完证书就能抓包。这里用一个生活化的比喻HTTPS请求相当于你给收件人写了一封上了锁的信锁是收件人给的只有收件人的钥匙能开。正常情况下第三方偷看这封信只能看到一堆乱码。但Charles的做法是它先拦下你原本要直接寄给服务器的信然后自己动手拆开看完了再用自己的钥匙重新包装一封新信寄给服务器再把服务器回信的内容拆开看一遍后重新包装给你。这一切能成立的关键就是这个“钥匙”。Charles使用的是一把叫“Charles根证书”的钥匙。手机或者电脑上如果没有安装这个根证书浏览器、App就会认为Charles不是可信的中间人会直接拒绝建立连接。而一旦安装了Charles根证书手机就会无差别信任Charles它就能顺利解密、查看、甚至修改流量。认清这个原理之后你就能理解后面每一步操作的必要性了。2.2 安卓7.0和MIUI系统版本带来的证书信任问题安卓系统从7.0开始有一个让无数开发者崩溃的改动默认情况下App自己发出的HTTPS请求不再信任用户手动安装的CA证书。也就是说你在手机设置里费半天劲装好的Charles证书只是让浏览器和部分应用信任但很多App尤其是目标调试的应用直接无视它照样加密通信你照样抓不到包。红米Note 8 Pro出厂系统Android 9后来升级MIUI 12甚至12.5底层对应Android 11这个问题一个不少。解决思路有几条第一种把证书移到系统证书目录让App认为这是系统预置的信任证书这是最彻底的办法后面我会专门讲第二种用调试版本或者hook绕过证书校验这种属于应用层操作根据你自己的场景看需不需要第三种修改App的网络安全配置但前提是这个App允许你改。MIUI系统版本的差异也很关键。早期MIUI基于Android 9时证书安装入口在“设置 安全 加密与凭据”里到了MIUI 12变成了“设置 密码与安全 系统安全 加密与凭据”。很多人网上搜到教程后照着老路径找找不到入口就以为手机坏了其实只是路径变了。2.3 Charles的SSL Proxying功能开关每过一段时间就会有人跑来问我在手机上下载安装了证书代理也设置了为什么Charles里看到的还是带锁的小图标展开后全是乱码一问才知道Charles自带的SSL解密功能根本没开启。这不是手机的问题是电脑端Charles的配置漏了。在Charles界面里找到Proxy菜单打开SSL Proxying Settings勾选Enable SSL Proxying然后添加一条规则。最省事的做法是加一个Host填“*”Port填“443”这样所有443端口的HTTPS流量都会尝试解密。这和你安装证书是两回事二者缺一不可。证书是让手机信任CharlesSSL Proxying开关是让Charles主动去解密流量没有这个开关流量只会原样透传Charles并不会去碰加密内容。3. 实际操作前需要准备的几件事3.1 电脑端和手机端的软件准备电脑上先装好Charles我用的版本是4.6.x序列号的问题自己解决这里不多聊。安装完成后先确认Charles能正常启动随便在浏览器访问一个HTTP网页能看到Charles界面上冒出请求说明电脑端代理工作正常。红米Note 8 Pro手机端则需要保证系统是正常的不要开什么省电模式之类的限制如果开发调试频繁的话建议关掉MIUI对后台联网的限制。还有一点很多人忽视手机和电脑必须连接到同一个WiFi网络否则手机设置了代理地址也找不到电脑。用办公网或热点都可以但确保路由设备没有开启AP隔离否则设备之间互相无法访问。3.2 电脑端Charles的端口和本机IPCharles默认的HTTP代理端口是8888这个不用改除非你本机有其他程序占用了这个端口。启动Charles后界面上会提示“Charles is running on port 8888”说明端口正常。接着在Charles的Help菜单中选择Local IP Address记下电脑当前在局域网里的IP地址通常是192.168.x.x或者10.x.x.x这一类的。这一步是最容易出错的点之一很多人的电脑同时连了WiFi和有线网系统里有多个IP你一定要选那个和手机同一网络的地址。简单验证方法是在手机浏览器里直接访问这个IP加端口比如http://192.168.1.100:8888如果出现一个写着欢迎页面的提示说明手机能访问到你的电脑。这一步没通过之前后面全白搭。3.3 手机WiFi代理设置红米Note 8 Pro上打开已连接的WiFi设置长按当前WiFi名称选择“修改网络”或“管理网络设置”展开高级选项代理方式选“手动”。主机名填刚才记下的电脑IP端口填8888然后保存。保存之后MIUI可能会弹窗提示“网络可能不可用”因为系统发现经由代理访问有风险直接选择仍然使用。如果这个弹窗导致代理配置被还原还需要重新设置一次。这里建议你先把手机代理配好再打开浏览器访问一个网页如果浏览器能打开页面但Charles上出现了来自这个手机的请求说明代理链路已经通了。提示设置代理后如果手机浏览器无法访问任何网页先检查电脑端Charles的System Proxy是否被关闭或者Windows防火墙是否放行了8888端口。4. 红米Note 8 Pro上安装Charles证书的完整流程4.1 用手机浏览器下载证书文件这一步是大多数人遇到的第一个拦路虎。手机在代理状态下打开浏览器访问chls.pro/ssl。这个域名是Charles官方提供证书下载的地址浏览器会自动下载一个crt或pem格式的证书文件。但有个很现实的问题有时候浏览器会把证书文件直接识别成危险下载或者提示格式不对。我实测过两种下载方式第一种就是直接用浏览器下载打开红米自带的浏览器或者Chrome都行关键是确保当前处于代理开启状态。如果你没开代理就访问这个地址那是Charles官方服务器直接给你发文件文件根本不是你本地Charles生成的证书装了也白装。第二种方式在Charles的Help菜单中选择SSL Proxying再选Save Charles Root Certificate把它保存到电脑上然后用微信或者数据线传到手机里点开安装。这种方式的好处是文件是本地生成的绝对匹配坏处是稍微麻烦一点。证书下载完成后MIUI的下载目录里会多出一个后缀为.pem或者.crt的文件可以通过通知栏找到它按下方的“打开”按钮会直接进入系统证书安装向导。4.2 MIUI里安装CA证书的正确定位路径MIUI系统里安装CA证书的路径确实比较隐蔽早期版本和现在版本还不一样。红米Note 8 Pro如果停在MIUI 10路径是“设置 更多设置 安全 加密与凭据 安装CA证书”。如果升级到了MIUI 12或者更高路径改成了“设置 密码与安全 系统安全 加密与凭据 安装证书”。点进去后选择CA证书此时系统会提示你需要设置锁屏密码。如果之前没设锁屏密码MIUI会强制先让你设置一个这是安卓系统的安全策略不能跳过。设置好密码后找到刚才下载的.pem文件选择安装。这里有个细节在MIUI的一些版本里安装CA证书的选项有两个一个叫“CA证书”一个叫“用户证书”一定要选“CA证书”。很多人在这一步选了后者装完一看证书列表里确实有Charles但实际证书的信任级别不对抓包还是失败后面折腾半天才发现装错了地方。安装完成之后系统会弹出“已安装CA证书”的提示有时候还要求你输入一次锁屏密码确认。到这一步证书安装本身已经完成了。可以去“加密与凭据”里点开“信任的CA证书”在“系统”标签下面找一找正常情况下根本看不到Charles在“用户”标签下面就能看到。这就是安卓7.0后的用户证书信任策略也是后面我们要处理的核心问题。4.3 把用户证书提升为系统证书这一步不是每个人都需要但如果你要抓的是某个正经的App不是浏览器那基本绕不开。红米Note 8 Pro是能解锁Bootloader的翻到底部连接小米账号申请解锁等几天有了root权限之后用户证书转系统证书就有路了。具体操作是这样的先用adb或者文件管理器从手机的数据目录里把用户证书导出来路径是/data/misc/user/0/cacerts-added/文件名是一串哈希加.pem后缀。然后计算它的哈希名称用OpenSSL命令或者一些现成的脚本工具得出一个在CA证书系统目录里不冲突的名称复制到/system/etc/security/cacerts/目录下给文件设置644权限重启手机。如果你不想搞root也可以让Charles配置好证书后配合Frida或者调试版App处理。有一个更实用的情况很多抠业务数据的同学根本不抓App的证书校验而是直接改App的AndroidManifest设置android:networkSecurityConfig允许用户证书不过这取决于App有没有开启调试配置不是所有App都能这么干。无论用哪种方式最终目标都是让手机在信任层面把Charles当作系统信任的CA之一。每换一台手机每重置一次设备都要重复一遍操作这也是很多人觉得抓HTTPS包麻烦的根源。4.4 验证证书是否生效证书装完之后不要急着打开目标App先做一个小实验在电脑的Charles界面上点Proxy菜单里的SSL Proxying Settings确认Enable SSL Proxying勾选状态再在Location里添加*和443。然后让手机浏览器访问一个HTTPS页面比如https://www.baidu.com。回到Charles里如果能看到百度的域名并且展开请求下面的数据能看到明文内容和URL说明整条链路已经通了。如果你看见请求还在但上面全都是SSLHandshake: Received fatal alert: certificate_unknown之类的错误说明证书没有正确装进用户证书目录如果浏览器直接显示安全警告打不开页面说明证书不匹配。检查方向很简单重新下载证书、删除旧证书、重装一遍。5. 装完证书依然抓不到包的常见问题排查5.1 手机访问chls.pro/ssl时提示无法打开或下载不完整这个问题的根源几乎都是代理没有生效。你可以先去手机浏览器访问一个纯HTTP网站比如http://www.baidu.com如果打不开说明代理链路有问题。排查顺序确认Charles端口监听是否正常确认Windows防火墙没拦8888端口确认手机代理填的IP是PC在局域网内真实IP确认没有写错端口。还有一个隐蔽的坑Charles开启之后它默认会同时把系统代理也设置好。如果你在电脑上访问chls.pro/ssl能下载证书但手机访问不了大概率不是Charles的问题而是红米Note 8 Pro的系统“安全网络”功能对代理访问做了限制。可以试着在手机浏览器里直接输入http://你的电脑IP:8888如果返回Charles提示页说明网络通如果直接超时那就要去MIUI设置里看看有没有开启“安全网络保护”之类的功能。5.2 证书文件下载下来后点击报错“格式无效”这种现象在红米自带的浏览器上出现的概率不低。原因是MIUI下载的证书文件被系统擅自修改了MIME类型或者是下载到的文件只有几字节说明下载过程被拦截。建议不要用自带浏览器下载改用Chrome或者Edge或者干脆从电脑上保存好证书文件传到手机上。传输方式用微信传文件或者数据线最简单传完之后要确认文件名后缀是.crt或.pem双击即可打开。如果仍然提示格式无效把文件用文件管理器重命名一次再打开有时候Oracle的pem文件和MIUI的MIME解析兼容性差改个后缀就好。5.3 安装证书时提示需要锁屏密码但设置后依然装不上MIUI安全策略规定只有设置了锁屏密码的情况下才能安装CA证书。这个密码不是WiFi密码不是应用锁密码必须是系统锁屏密码。如果你已经设置了但加载证书时还是提示需要设置有一种可能是你设置的密码类型太弱比如无密码或滑动解锁。解决方法是去“设置 密码与安全 锁屏密码”把类型改成PIN码或更高级别。同时确保手机当前没有开启“访客模式”或者“儿童模式”这两种状态下系统不允许进行安全证书类操作。5.4 证书装好了、代理也配置完成但目标App依然抓不到包这个问题要分两种情况来看情况一App发起了请求但Charles里只看到TCP连接看不到任何HTTP内容而且刷新后请求数量很少说明App的流量根本没走系统代理。微信小程序、部分游戏、银行App都会自己接管网络层不走系统代理。对策是让手机使用透明代理比如配合转发工具把所有TCP流量转发到Charles。情况二Charles能看到请求但展开后显示乱码而且报错“SSLHandshake: Received fatal alert: unknown_ca”这说明App做了证书校验。常见对策就是前面提到的把用户证书升级为系统证书或者用Frida配合绕过pinning。红米Note 8 Pro上如果跑的是MIUI 12还要注意一个点MIUI的“隐私保护”功能里的“拦截网路”开关可能会对某些App生效导致连接被切断。抓包时建议先把这个关闭或者授权给调试的App。5.5 抓包过程中手机出现“网络波动”“无法连接”的提示出现这种情况大概率不是网络真的有问题而是代理配置导致的。Charles没开着或者电脑IP变化了手机里所有流量都会失败。红米Note 8 Pro的WiFi模块对这种情况有一个很烦人的表现一旦代理失效部分App直接显示服务器超时但换个普通页面有时又能打开很容易让人怀疑是App的问题而不是代理的问题。排查建议先把代理关闭确认手机网络恢复。然后重新确认电脑的IP因为自动获取的IP是会变的重配代理。最稳妥的办法是在电脑上把WiFi的IP设置成静态IP比如192.168.1.110这样以后手机设置代理不用反复改地址。5.6 证书只能用于部分App比如浏览器能用但目标App不行这基本就是安卓7.0后用户证书信任问题的典型案例。如果你不想root还有一个相对省事的办法如果你的目标App本身就是你们自己开发的或者是可以修改的直接在App的res/xml/network_security_config.xml里配置信任用户证书如下所示network-security-config base-config cleartextTrafficPermittedtrue trust-anchors certificates srcsystem / certificates srcuser / /trust-anchors /base-config /network-security-config然后在AndroidManifest.xml的application节点里加上android:networkSecurityConfigxml/network_security_config重新打包安装即可。如果你只是调试别人的App那还是老老实实root后把用户证书转成系统证书吧别在这一步浪费时间。6. 用红米Note 8 Pro抓包时的一些实操心得6.1 抓包别开WiFi智能省电MIUI有一个WiFi智能省电模式会间歇性断开网络连接以节省电量抓包时这个功能会害得你断断续续。直接关闭进入WiFi设置点当前网络的设置按钮关闭“智能省电”或者“网络优化”。这种优化平时感觉不明显但抓包时非常致命你会在Charles上看到请求时好时坏。6.2 控制好证书的安装时机证书装好一次之后哪怕你后续重启手机也不会丢。但如果你恢复出厂设置、刷机升级系统证书目录就会被清空。每次升级MIUI大版本之前想清楚要不要保留调试环境升级完之后重新走一遍证书安装流程。红米Note 8 Pro发布这么久MIUI版本跨度非常大我印象里至少经历了三轮证书安装路径变化。6.3 使用Charles的Filter功能提升效率开始抓目标App时手机上其他App的后台请求也会一股脑涌进Charles界面。建议在Charles的主面板里添加Filter比如加一个Host为api.example.com的过滤器一眼就只看到目标请求。你还可以右键请求列表里的某条请求选择Focus把这条请求置顶标色平时调试特别实用。6.4 弱网测试和断点修改要配合使用证书都弄好之后Charles的威力才算真正释放。比如红米Note 8 Pro这种手机上做App弱网测试在Charles的Proxy菜单下打开Throttle Settings可以限速到3G甚至Edge网络还能加丢包延迟。配合Breakpoint功能可以拦截请求修改请求参数或者响应数据再放行给App做接口容错测试非常方便。我自己习惯的操作是先Filter到目标接口然后开启Throttle断点打开手动改几次响应确认App逻辑没问题后再关掉。这套流程在红米Note 8 Pro上跑得很顺注意改完响应之后要把Throttle和Breakpoint都关掉否则后面所有请求都变得巨慢让人误以为手机坏了。6.5 证书过期后的更新方法Charles证书是有有效期的。如果你的手机突然某天抓包全部失败报错里出现“certificate expired”之类的字眼基本就是证书过期了。处理方法是在电脑端Charles里删除旧证书重新生成新证书手机上把旧证书删掉再走一遍下载安装流程。这里有个细节一定要先把手机上旧证书删了再装新的否则系统会因为存在同名证书而安装失败。7. 最后分享一点实际操作中的体会我在红米Note 8 Pro上反复折腾Charles证书的那段时间最深的一个感受是抓包这件事90%的时间不是在抓包而是在解决证书和代理链路的问题。MIUI和原生安卓的差异、安卓系统版本升级带来的策略变化、不同App的自有网络逻辑都会让原本简单的事情变得复杂。所以如果你装在红米Note 8 Pro上遇到问题先不要急着怀疑教程不对一步一步按顺序排查代理通不通、证书装没装、SSL Proxying开没开、App是否信任用户证书绝大多数问题都在这个循环里。证书装好之后的体验是真的香。你能在电脑上看着红米Note 8 Pro里每一个App向外发送的请求看清楚它们上报的行为数据、用户异常信息、还有各种接口返回值对排查线上问题的帮助是巨大的。如果条件允许建议你多备一台专门用来调试的安卓手机专门用于抓包测试不要拿主力机折腾毕竟证书信任级别提升后对设备安全属于反向影响用专用测试设备会更稳妥。希望这篇基于红米Note 8 Pro的Charles证书安装实战记录能给你省点时间。如果你照着操作一遍还没通回头看看是不是中间某一步的入口找错了或者证书下到了错误的文件这两类原因的占比至少七成。剩下的三成就是App本身在反调试上做了加固那就只能靠更进阶的方案去解决了改天有空再单独写一篇聊聊。