Android 10/11 工作配置文件(Work Profile)下CA证书安装相关问题咨询
CA证书安装教程(含工作配置文件专属场景)
常规安装方案
安装到系统证书目录(需Root/具备系统分区修改权限)
全局生效,覆盖所有用户、所有配置文件,操作步骤如下:
- 先将CA证书转为PEM格式,计算证书哈希值:
openssl x509 -inform PEM -subject_hash_old -in 你的证书文件.crt | head -1,执行后会得到类似e89023a1的8位哈希值 - 重命名证书文件:
mv 你的证书文件.crt e89023a1.0,注意替换为你自己计算得到的哈希值 - 推送证书到系统证书目录:
adb push e89023a1.0 /system/etc/security/cacerts/ - 调整文件权限:
chmod 644 /system/etc/security/cacerts/e89023a1.0 && chown root:root /system/etc/security/cacerts/e89023a1.0 - 重启设备后证书生效
为指定用户安装用户级证书
安卓多用户/多配置文件场景下每个用户的证书存储相互独立,可定向安装:
- 先查询所有用户的ID:
adb shell pm list users,普通主用户ID默认为0,工作配置文件的ID一般为10、11这类大于10的数值 - 指定用户ID安装证书:
adb shell cmd keystore install --user <目标用户ID> 你的证书文件.crt
工作配置文件专属安装方案(管理员应用权限)
你作为工作配置文件的管理员应用,不需要调用系统设置项,可直接通过系统接口完成安装:
- 调用
DevicePolicyManager.installCaCert(ComponentName admin, byte[] certBuffer)方法即可,传入的证书需为DER编码的字节流 - 只要你的管理员组件是注册在工作配置文件名下的,系统会自动将证书安装到对应工作配置文件的可信存储,不会影响主用户
- 安卓11及以上系统支持管理员应用将证书安装到工作配置文件的系统证书层级,需提前声明
android.Manifest.permission.MANAGE_CA_CERTIFICATES权限,调用方法时额外传入第二个参数true即可
注意:主用户安装的用户级证书默认不会同步到工作配置文件,必须通过上述管理员接口或者针对工作用户ID的命令单独安装
内容的提问来源于stack exchange,提问作者Brad Priddy
相关产品推荐
相关产品推荐

