Android 通过ADB安装用户证书

Android 通过ADB安装用户证书,android,certificate,adb,x509certificate,Android,Certificate,Adb,X509certificate,有没有办法通过ADB在安全->可信凭证->用户选项卡下安装CA证书(.crt文件)?或者任何其他“可编写脚本”的方式。我找到了一种方法来实现这一点,因此我能够信任charles代理证书。它将作为受信任的SSL根证书添加 首先,您需要获取证书哈希 openssl x509 -inform PEM -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem | head -1>toto 我使用windows,将其存储在一个

有没有办法通过ADB在
安全->可信凭证->用户选项卡下安装CA证书(
.crt
文件)?或者任何其他“可编写脚本”的方式。

我找到了一种方法来实现这一点,因此我能够信任charles代理证书。它将作为受信任的SSL根证书添加

首先,您需要获取证书哈希

openssl x509 -inform PEM -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem | head -1>toto
我使用windows,将其存储在一个var中,以便自动化过程
set/p totoVar=由于这个答案,我能够调整一个在bash shell上工作的脚本:

PEM_FILE_NAME=logger-charles-cert.pem
hash=$(openssl x509 -inform PEM -subject_hash_old -in $PEM_FILE_NAME | head -1)
OUT_FILE_NAME="$hash.0"

cp $PEM_FILE_NAME $OUT_FILE_NAME
openssl x509 -inform PEM -text -in $PEM_FILE_NAME -out /dev/null >> $OUT_FILE_NAME

echo "Saved to $OUT_FILE_NAME"
adb shell mount -o rw,remount,rw /system
adb push $OUT_FILE_NAME /system/etc/security/cacerts/
adb shell mount -o ro,remount,ro /system
adb reboot

(是的,我知道这可能是一条评论,但我还没有足够的声誉将其作为评论发布)

我通过以下步骤获得了一个服务器证书显示在
可信凭证->用户
选项卡(而不是其他答案显示的系统选项卡)下:

#!/bin/bash
subjectHash=`openssl x509 -inform PEM -subject_hash_old -in server.crt | head -n 1`
openssl x509 -in server.crt -inform PEM -outform DER -out $subjectHash.0
adb root
adb push ./$subjectHash.0 /data/misc/user/0/cacerts-added/$subjectHash.0
adb shell "su 0 chmod 644 /data/misc/user/0/cacerts-added/$subjectHash.0"
adb reboot

您解决问题了吗?静默安装证书的唯一方法是通过设备策略管理器,并且只有应用程序(.apk)才能注册为DPM,遗憾的是,经过长时间的研究,我陷入了死胡同。@Mohamedayadii想出了一种方法;openssl x509-通知PEM-主题\u hash_old-in-charles-proxy-ssl-proxying-certificate.PEM | head-1>toto集/p TOTOTOVAR=%TOTOTOVAR%echo%TOTOTOTOVAR%openssl x509-通知PEM-文本-in-charles-proxy-ssl-proxying-certificate.PEM-out nul>%TOTOTOTOTOVAR%adb外壳安装-o rw,重新安装,rw/system-adb-push%tototovar%/system/etc/security/cacerts/adb-shell-mount-o-ro,remount,ro/system-adb-reboot“adb-shell-o-rw,remount,rw/system”不正确,您应该使用“adb-shell-mount-o-rw,remount/system”我还必须将证书权限设置为644才能工作。否则证书无法识别。我收到了此错误/ssl_pinning.sh:第3行:!!:未找到命令头:cert_name=.0:没有此类文件或directory@Gorio你可能会觉得有用。您肯定需要对其进行一点更新(我无法将生成的文件复制到AVD的/system分区,但使用Genymotion获得了成功)。+1在Legenes android 10上测试,效果非常好。重新启动后,不要忘记在
可信凭证->用户中单击“信任”
#!/bin/bash
subjectHash=`openssl x509 -inform PEM -subject_hash_old -in server.crt | head -n 1`
openssl x509 -in server.crt -inform PEM -outform DER -out $subjectHash.0
adb root
adb push ./$subjectHash.0 /data/misc/user/0/cacerts-added/$subjectHash.0
adb shell "su 0 chmod 644 /data/misc/user/0/cacerts-added/$subjectHash.0"
adb reboot