Trusted through magic. Trust with Magisk.
在 Android 14 + 中, Google 更新了新的 CA 证书信任政策。相关更新信息可以参见此处。这一更新使得系统 CA 证书列表不能再像以前那样直接通过修改 /system/etc/security/cacerts
来变更。
系统 CA 证书列表的来源更换至了 /apex/com.android.conscrypt/cacerts。也就是说, CA 证书是从系统 APEX 组件内动态加载的。而 APEX 组件具备了数字签名验证机制, 想要直接修改的可能性甚微。
但好消息是, 我们依然具有 Root 权限。
MITMProxy Cert Next 所做的就是: 在系统加载时, 先将证书添加至 System 分区下的 CA 目录, 接着直接将 /system/etc/security/cacerts
动态覆盖挂载至 /apex/com.android.conscrypt/cacerts
。这样, 不需要对 APEX 组件作出任何修改, /apex/com.android.conscrypt/cacerts
下的内容也能和 System CA 目录的内容一致。
你可以直接从 GitHub Releases 中下载 ZIP 包, 或者你也可以 clone 源代码后, 重新将源代码下的 /src
文件夹压缩为 ZIP 格式。
最终获得的 ZIP 包的结构应该类似这样:
module.zip
|- common
|- file_contexts_image
|- service.sh
|- system.prop
|- META-INF
|- com
|- google
|- android
|- update-binary
|- updater-script
|- system
|- etc
|- security
|- cacerts
|- c8750f0d.0
|- customize.sh
|- module.prop
|- post-fs-data.sh
前往 Magisk Manager --> 模块, 选择 "从本地安装", 然后选中模块 ZIP 包。在弹出的对话框中点击 "确定", 随后等待模块刷入完成。
刷入完成后, 点击右下角的 "重启", 等待设备重启完成。
重启完成后, 解锁设备, 现在应该看到 MITMProxy 的 CA 文件在系统 CA 信任区。
如果想要将本模块作为模板, 用以在 Android 14+ 上信任任意自定义 CA 证书, 只需要在刷入前修改本模块 ~/system/etc/security/cacerts
下的内容即可。
本项目基于 MIT License 开源。