## 是什么 简单来说,无论是应用双开、应用分身还是隐私空间,它们底层的实现原理大多是基于 Android 的 **Multiple Users(多用户机制)**。主应用运行在宿主用户(User 0)下,而分身应用运行在另一个独立的用户空间(比如 User 10 或 User 999)下。 **核心问题在于:Android 的“用户证书(User Credentials)”是按用户空间(User)隔离的。** 你在手机设置里安装的证书,默认只写入了主用户(User 0),分身用户根本读不到,而且系统默认没有提供为分身用户安装证书的入口。 ## 如何做 下载[ADB](https://developer.android.com/tools/releases/platform-tools?hl=zh-cn) [scode type="red"]如果遇到adb找不到设备的情况,请排查:USB调试开启了吗?MTP文件传输开启了吗?仅充电允许ADB开启了吗?ADB/MTP驱动正常吗(打开设备管理器 → 存在未知设备(感叹号))如果是驱动问题,安装华为驱动后可直接修复,[点我访问下载主页](https://consumer.huawei.com/cn/support/hisuite/)[/scode] **获取分身用户的 ID** ```powershell adb shell pm list users ``` **将证书安装到分身用户** ```powershell adb shell am start --user <用户ID> -a android.credentials.INSTALL adb shell pm clear --user com.android.certinstaller ``` **效果:** 手机屏幕上会弹出一个熟悉的安全界面,提示你选择并安装证书。此时安装的证书将**专门服务于分身应用**。 ## 为什么 **为什么不直接把用户证书提升为系统证书?** 需要root权限。 **为什么还要操作手机,不直接用命令完成证书安装?** 因为 Android 系统的凭据存储(KeyStore)不是一个简单的、暴露在用户层面的文件夹,而是一个受到系统底层硬件(如安全芯片/TEE)保护的加密数据库。每个用户空间(User)的加密密钥都是隔离的。 **为什么不使用Xposed JustTrustMe?** `JustTrustMe` 是一个基于 Xposed 框架的开源模块。它的核心原理非常暴力且有效: 它通过 Hook(拦截)Android 系统中几乎所有主流的网络请求库(如 HttpClient、OkHttp、Volley、WebView 等),**强行把里面的证书校验逻辑返回值改成“True”**。如果是自己开发的app,在开发测试阶段当然可以使用该模块,但是当前需求是用户证书如何作用于【微信分身】上。 ## 写在最后 [scode type="red"]实际测试的时候,发现在华为老版本系统上EMUI系统上,副用户安装证书后可用,但在HONOR 10上副用户安装证书但应用识别不到,应该是魔改系统,证书逻辑不一样。[/scode] Loading... ## 是什么 简单来说,无论是应用双开、应用分身还是隐私空间,它们底层的实现原理大多是基于 Android 的 **Multiple Users(多用户机制)**。主应用运行在宿主用户(User 0)下,而分身应用运行在另一个独立的用户空间(比如 User 10 或 User 999)下。 **核心问题在于:Android 的“用户证书(User Credentials)”是按用户空间(User)隔离的。** 你在手机设置里安装的证书,默认只写入了主用户(User 0),分身用户根本读不到,而且系统默认没有提供为分身用户安装证书的入口。 ## 如何做 下载[ADB](https://developer.android.com/tools/releases/platform-tools?hl=zh-cn) <div class="tip inlineBlock error"> 如果遇到adb找不到设备的情况,请排查:USB调试开启了吗?MTP文件传输开启了吗?仅充电允许ADB开启了吗?ADB/MTP驱动正常吗(打开设备管理器 → 存在未知设备(感叹号))如果是驱动问题,安装华为驱动后可直接修复,[点我访问下载主页](https://consumer.huawei.com/cn/support/hisuite/) </div> **获取分身用户的 ID** ```powershell adb shell pm list users ``` **将证书安装到分身用户** ```powershell adb shell am start --user <用户ID> -a android.credentials.INSTALL adb shell pm clear --user <USER_ID> com.android.certinstaller ``` **效果:** 手机屏幕上会弹出一个熟悉的安全界面,提示你选择并安装证书。此时安装的证书将**专门服务于分身应用**。 ## 为什么 **为什么不直接把用户证书提升为系统证书?** 需要root权限。 **为什么还要操作手机,不直接用命令完成证书安装?** 因为 Android 系统的凭据存储(KeyStore)不是一个简单的、暴露在用户层面的文件夹,而是一个受到系统底层硬件(如安全芯片/TEE)保护的加密数据库。每个用户空间(User)的加密密钥都是隔离的。 **为什么不使用Xposed JustTrustMe?** `JustTrustMe` 是一个基于 Xposed 框架的开源模块。它的核心原理非常暴力且有效: 它通过 Hook(拦截)Android 系统中几乎所有主流的网络请求库(如 HttpClient、OkHttp、Volley、WebView 等),**强行把里面的证书校验逻辑返回值改成“True”**。如果是自己开发的app,在开发测试阶段当然可以使用该模块,但是当前需求是用户证书如何作用于【微信分身】上。 ## 写在最后 <div class="tip inlineBlock error"> 实际测试的时候,发现在华为老版本系统上EMUI系统上,副用户安装证书后可用,但在HONOR 10上副用户安装证书但应用识别不到,应该是魔改系统,证书逻辑不一样。 </div> 最后修改:2026 年 05 月 30 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 你的点赞将成为我坚持的动力,之一