配置说明
certs.conf
路径:/data/adb/modules/CertBridge/config/certs.conf
schema_version=3
reqable=1
proxypin=1
mount_mode=compatible| 键 | 含义 | 默认 |
|---|---|---|
schema_version | 配置结构版本,请勿手动修改 | 3 |
reqable | 启用 Reqable(App 导入)CA | 1 |
proxypin | 启用 ProxyPin CA(App 或内置兜底) | 1 |
mount_mode | 挂载模式:compatible 或 magic | compatible |
挂载模式
证书桥提供两种把 CA 送进系统信任库的方式,可在 自定义安装 用音量键选择,或在 WebUI「更多 → 挂载模式」切换(均需重启生效)。默认安装固定为完整兼容。
完整兼容(compatible,默认)
| 项目 | 行为 |
|---|---|
| 原理 | 开机从当前系统 / Conscrypt 信任库做完整合并,加上启用的 addon,经 tmpfs 后 bind 到目标路径 |
模块 system/ | 不写叠层目录(避免错误叠层导致系统 CA 被遮蔽) |
| Android 7–13 | bind /system/etc/security/cacerts |
| Android 14+ | bind APEX Conscrypt 与 system 双路径(供 Flutter 等检测) |
| 临时目录 | /data/local/tmp/sys-ca-merge(热挂载为 sys-ca-merge-hot) |
| 元模块 | 不需要。Magisk / KernelSU / APatch 只要能跑 post-fs-data / service 即可 |
| 特点 | 兼容面宽、行为可控;mountinfo 中可见临时目录挂载 |
适合:大多数用户、KernelSU 未确认挂载叠层是否正确、需要多 CA / 热挂载 / 与完整校验一致的场景。
轻量 Magic Mount(magic)
| 项目 | 行为 |
|---|---|
| 原理 | 只把当前启用的 addon(Reqable / ProxyPin / 自定义等)写成 hash.N,放入模块的 system/etc/security/cacerts/,交给管理器的 Magic Mount 叠进系统目录 |
模块 system/ | 仅 addon 文件;无证书时会删掉空目录,避免空目录整库遮蔽 |
| Android 7–13 | 主要依赖 Magic Mount,开机脚本不再对 system 做整库 bind |
| Android 14+ | system 仍靠 Magic Mount;APEX 仍由脚本 bind(管理器通常无法 Magic Mount /apex) |
| 元模块 | 见下表 |
| 特点 | 痕迹更接近「多几张系统 CA」;依赖管理器叠层实现正确 |
| Root 方案 | 轻量模式是否需要元模块 |
|---|---|
| Magisk | 一般不需要(自带 Magic Mount,按文件叠层) |
| KernelSU | 常常需要确认:管理器或挂载元模块必须对 system/ 做文件级叠层。若实现成「用模块目录整目录替换」,系统 CA 会只剩模块里那几张,表现为大面积 TLS 失败——请立刻改回完整兼容并重启 |
| APatch | 视版本挂载实现而定;异常时改用完整兼容 |
适合:已确认 Magic Mount 叠层正常、希望减少整库 bind 痕迹的环境。不确定时请用完整兼容。
如何选择
- 默认 / 不确定 → 完整兼容
- Magisk 且想更「轻」→ 可试 轻量 Magic,重启后看系统信任库证书总数是否仍接近原来的几百张
- KernelSU → 优先完整兼容;仅在确认叠层正确后再用轻量
- 切换模式、改开关、导入自定义后都要重启
也可在 WebUI「更多 → 挂载模式」切换,重启后生效。
也可在 WebUI「证书」页用开关修改 Reqable / ProxyPin。开关与自定义永久证书仍在重启后生效,避免重写正在使用的开机证书层。点击证书行可展开详情(主题、颁发者、有效期、指纹等由模块 X509 工具解析;标题自动取 CN / O)。

安装组件记录
安装脚本会生成 config/install-profile.conf,例如:
install_mode=default
webui=1
hot_reload=1
mount_mode=compatible
reqable_source=app
proxypin_source=builtin| 键 | 含义 |
|---|---|
install_mode | default 或 custom |
webui | 是否安装了 WebUI(1 / 0) |
hot_reload | 是否安装了免重启热挂载(1 / 0) |
mount_mode | compatible 或 magic |
reqable_source | app 或 none(未导入成功则为 none,对应开关会被关掉) |
proxypin_source | app / builtin / none |
选择不安装 WebUI 不影响开机证书注入;选择不安装热挂载后,设备上不会保留 bin/hot_mount.sh,WebUI 也会隐藏对应区域。
默认安装固定 mount_mode=compatible;仅自定义安装会询问挂载模式。
自定义证书
适用于 HttpCanary、ADGuard、Charles、mitmproxy 等,或 Reqable / ProxyPin 未自动检测到时。显示名优先取证书 CN(其次 O)。
- WebUI 支持 PEM(Base64 文本)与 DER(二进制);后缀常见
.pem、.crt、.cer、.der,按内容识别,不必先改名 - 模块使用自带 X509 工具校验(完整版为静态 OpenSSL;Lite 为
cbx509dex)。检查 X.509、有效期和CA:TRUE - 自动计算 8 位十六进制
subject_hash_old作为系统信任库文件名,冲突时分配.1、.2等 - 单个文件最大 64 KiB;保存后写入系统信任库,重启生效(与「仅装到用户证书」不是同一层)
- 长期只用自定义证书时,可关闭 Reqable / ProxyPin 开关,避免多张并存造成困惑
也可将证书放入 certs/custom/,下次开机一并合并;日常更推荐 WebUI。安装时若检测到 HttpCanary、ADGuard,也会询问是否直接导入到该目录。
临时免重启挂载(热挂载)
用一句话理解:临时把某几张 CA「塞进」系统信任库,马上能试抓包,不用重启;点卸载或重启就没了,不改永久配置。
它和 WebUI 里「自定义证书 / 开关 Reqable」不是一回事——那些是永久的,要重启才进入开机那一层。
永久 vs 临时
| 永久(开机注入) | 临时(热挂载) | |
|---|---|---|
| 改什么 | certs.conf、自定义上传、certs/custom/ | 只建一次临时会话 |
| 何时生效 | 重启后 | 立刻 |
| 重启后 | 还在 | 自动消失 |
| 入口 | WebUI 开关 / 上传 | WebUI「临时免重启挂载」或 Action |
热挂载时,模块还会把你已经启用的永久证(如 Reqable / ProxyPin)一并带上,避免临时层把它们盖掉。
安装时是否带上
- 选择默认安装,或
- 自定义安装时对「免重启热挂载」按音量上确认
否则不会保留 bin/hot_mount.sh,WebUI 隐藏热挂载区,Action 实用菜单会提示组件未安装。
三种挂载模式
证书可以从两个地方「捡」:
挂载用户证书
- 读哪里:系统「设置 → 安全 → 加密与凭据 → 用户证书」里已经装好的 CA(各用户下的
cacerts-added) - 你要做的:先在系统设置里把抓包 CA 装成用户证书
- 然后:WebUI 点「挂载用户证书」,或 Action 里选挂载用户区
- 结果:这些用户证被临时抬成系统信任,很多 App 才会真正信任
- 注意:会扫本机所有用户 / 工作资料里的用户证,等于临时「全局信任」它们,只挂你信得过的
挂载存储卡证书
- 读哪里:默认
/sdcard/CertBridge(WebUI 里可改成其它/sdcard/...路径) - 你要做的:把
.pem/.crt/.cer/.der等 CA 文件拷进该文件夹 - 然后:点「挂载存储卡证书」
- 结果:只信任你放进该目录的证,一般比「挂用户区」更干净、更好控
- 典型用法:从 Reqable 导出当前根证 → 丢进
/sdcard/CertBridge→ 挂载 → 立刻试抓包,确认指纹对不对
合并挂载(挂载全部)
- = 用户证书 + 存储卡证书一次做完
- 两边都有证时用;只想用一边就不要选全部
单次最多约 128 张通过校验的 CA(须为 CA、未过期、≤ 64 KiB)。
无痕卸载
- 只拆掉这次热挂载会话,把系统信任库视图恢复成挂载前的样子
- 不会:删设置里的用户证书、删存储卡文件、改
certs.conf、动永久自定义证 - 等价操作:点「无痕卸载」,或直接重启(临时层本来就会消失)
- 若提示卸不干净(别的模块又叠了一层),按提示重试或重启即可
和 Action 的关系
同一套功能,两个入口,底层都调用 bin/hot_mount.sh:
| WebUI「证书」页底部 | 模块管理器 Action | |
|---|---|---|
| 挂用户 / 存储卡 / 全部 | 三个按钮 | 音量下进菜单后逐项询问;上=执行、下=跳过 |
| 存储卡路径 | 可输入 / 修改 | 固定 /sdcard/CertBridge |
| 无痕卸载 | 「无痕卸载」按钮 | 菜单最后一项 |
| 音量上(Action 第一级) | — | 只刷新状态,不挂载 |
推荐用法(最简单)
- 从抓包 App 导出当前根证书
- 放进
/sdcard/CertBridge(没有就新建) - WebUI → 证书页 → 挂载存储卡证书
- 强停要抓的 App 再打开,试抓包
- 通了:再做成 WebUI「自定义证书」并重启(永久);或点 无痕卸载 / 重启清掉临时层
若证书已经装在系统「用户证书」里,用「挂载用户证书」即可,不必拷到存储卡。
注意
- 不会改
certs.conf,也不会永久写入certs/custom/ - 「用户区」会把各用户凭据里的 CA 提到全局系统信任,请确认来源可信
- 若提示命名空间部分未覆盖:强停目标 App 再开,或卸载后重挂;仍异常可重启
- 与永久注入可同时存在:简介里会同时提示临时张数与永久证书概况
WebUI「更多」页(显示选项)
在已安装 WebUI 时可用:
- 主题:浅色 / 深色 / 跟随系统;可选莫奈(Material You)取色
- 布局:经典底栏 / 悬浮分页(Dock)
- 紧凑卡片、字号等阅读偏好
- 概览页可请求重启;关于里有酷安、GitHub、在线文档与打赏入口
深色模式下模块会同步状态栏图标颜色(依赖管理器 WebUI 桥接,如 MMRL / WebUI-X)。
状态与简介
模块列表简介格式:[大状态|子状态] 说明
(emoji 后无空格;方括号内 | 两侧不加空格;括号外若用到 | 则两侧加空格)
例如:[✅运行正常|已挂载:2] 当前生效:Reqable、ProxyPin。
| 大状态 | 常见含义 |
|---|---|
| ✅运行正常 | 开机注入成功,附加证书已挂上 |
| ⏳待重启 | 永久开关或自定义证书已改,需重启 |
| 🔥热挂载 | 存在临时会话(可能附带「部分未覆盖」「待重启」) |
| ⚠️异常 | 证书集未就绪或注入失败(见日志 / inject-error) |
| 💤未启用 | 当前没有启用的附加证书 |
| ✨注入中 / 🔎检测中 | 开机流程尚未写完最终状态 |
| ⛔已禁用 | 模块被管理器禁用 |
WebUI 概览与简介只读开机写入的运行时状态缓存,不再后台轮询。
日志
data/install.log— 安装与运行日志;WebUI「日志」页可查看 / 清空- 刷入时若 OpenSSL / Lite 探测失败,安装日志会写出诊断信息