Skip to content

配置说明

certs.conf

路径:/data/adb/modules/CertBridge/config/certs.conf

text
schema_version=3
reqable=1
proxypin=1
mount_mode=compatible
含义默认
schema_version配置结构版本,请勿手动修改3
reqable启用 Reqable(App 导入)CA1
proxypin启用 ProxyPin CA(App 或内置兜底)1
mount_mode挂载模式:compatiblemagiccompatible

挂载模式

证书桥提供两种把 CA 送进系统信任库的方式,可在 自定义安装 用音量键选择,或在 WebUI「更多 → 挂载模式」切换(均需重启生效)。默认安装固定为完整兼容。

完整兼容(compatible,默认)

项目行为
原理开机从当前系统 / Conscrypt 信任库做完整合并,加上启用的 addon,经 tmpfs 后 bind 到目标路径
模块 system/不写叠层目录(避免错误叠层导致系统 CA 被遮蔽)
Android 7–13bind /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 痕迹的环境。不确定时请用完整兼容。

如何选择

  1. 默认 / 不确定 → 完整兼容
  2. Magisk 且想更「轻」→ 可试 轻量 Magic,重启后看系统信任库证书总数是否仍接近原来的几百张
  3. KernelSU → 优先完整兼容;仅在确认叠层正确后再用轻量
  4. 切换模式、改开关、导入自定义后都要重启

也可在 WebUI「更多 → 挂载模式」切换,重启后生效

也可在 WebUI「证书」页用开关修改 Reqable / ProxyPin。开关与自定义永久证书仍在重启后生效,避免重写正在使用的开机证书层。点击证书行可展开详情(主题、颁发者、有效期、指纹等由模块 X509 工具解析;标题自动取 CN / O)。

证书页

安装组件记录

安装脚本会生成 config/install-profile.conf,例如:

text
install_mode=default
webui=1
hot_reload=1
mount_mode=compatible
reqable_source=app
proxypin_source=builtin
含义
install_modedefaultcustom
webui是否安装了 WebUI(1 / 0
hot_reload是否安装了免重启热挂载(1 / 0
mount_modecompatiblemagic
reqable_sourceappnone(未导入成功则为 none,对应开关会被关掉)
proxypin_sourceapp / builtin / none

选择不安装 WebUI 不影响开机证书注入;选择不安装热挂载后,设备上不会保留 bin/hot_mount.sh,WebUI 也会隐藏对应区域。

默认安装固定 mount_mode=compatible;仅自定义安装会询问挂载模式。

自定义证书

适用于 HttpCanary、ADGuard、Charles、mitmproxy 等,或 Reqable / ProxyPin 未自动检测到时。显示名优先取证书 CN(其次 O)。

  1. WebUI 支持 PEM(Base64 文本)与 DER(二进制);后缀常见 .pem.crt.cer.der,按内容识别,不必先改名
  2. 模块使用自带 X509 工具校验(完整版为静态 OpenSSL;Lite 为 cbx509 dex)。检查 X.509、有效期和 CA:TRUE
  3. 自动计算 8 位十六进制 subject_hash_old 作为系统信任库文件名,冲突时分配 .1.2
  4. 单个文件最大 64 KiB;保存后写入系统信任库,重启生效(与「仅装到用户证书」不是同一层)
  5. 长期只用自定义证书时,可关闭 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 第一级)只刷新状态,不挂载

推荐用法(最简单)

  1. 从抓包 App 导出当前根证书
  2. 放进 /sdcard/CertBridge(没有就新建)
  3. WebUI → 证书页 → 挂载存储卡证书
  4. 强停要抓的 App 再打开,试抓包
  5. 通了:再做成 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 探测失败,安装日志会写出诊断信息

CertBridge · 证书桥