写在前面
在Android14,Google改变了此前的默认行为,将证书注入至/system/etc/security/cacerts/
不再有效,需要转而注入至/apex/com.android.conscrypt/cacerts/
。
推荐使用PEM
证书,当然,其他格式也可以识别,只是系统CA都用的PEM
,塞一个DER
进去我认为很难看。
接下来的步骤,我会假定你已经获取了完整的root权限。
如何注入?
注入有两种方式,通过Magisk
模块注入(推荐),或直接修改/apex/com.android.conscrypt/cacerts/
。
1. 模块注入
这里有一个仍在活跃的movecert
模块分叉:
ys1231/MoveCertificate
- 首先,在系统设置的凭据存储内,将证书安装至用户存储区。
- 下载安装此模块,重启系统。
不出意外的话,你会在受信任的CA列表看到你的自定义证书。
2. 手动注入
首先,将你的证书拷贝至一个可用的Linux执行环境(Termux
或者WSL
都可以),并执行以下命令获取证书名字串
1 | openssl x509 -inform PEM -subject_hash_old -in YOUR_CUSTOM_CA_CERT.pem | head -1 |
将YOUR_CUSTOM_CA_CERT.pem
修改为你的证书路径。
一般来说,此命令会输出一串八位字符串,类似下面这样:
1 | 0f114514 |
你的证书文件名就应为0f114514.0
(注意.0
后缀)。
最后,将文件移入/apex/com.android.conscrypt/cacerts/
,重启系统。