web-dev-qa-db-ja.com

ADBを介してユーザー証明書をインストールする

CA証明書をインストールする方法はありますか(.crtファイル)Security -> Trusted Credential -> User tab ADB経由?またはその他の「スクリプト可能な」方法。

10
Andro Secy

私はこれを行う方法を考え出したので、チャールズのプロキシ証明書を信頼することができました。信頼できるSSLルート証明書として追加されます。

まず、証明書のハッシュを取得する必要があります

openssl x509 -inform PEM -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem | head -1>toto

私はウィンドウを使用して、プロセス内の自動化するためにvarに保存しますset /p totoVar=<toto

set totoVar=%totoVar%.0 && DEL toto

cat charles-proxy-ssl-proxying-certificate.pem > %totoVar%

openssl x509 -inform PEM -text -in charles-proxy-ssl-proxying-certificate.pem -out nul >> %totoVar%

adb Shell mount -o rw,remount,rw /system

adb Push %totoVar% /system/etc/security/cacerts/

adb Shell mount -o ro,remount,ro /system

adb reboot
8

この回答のおかげで ADB経由でユーザー証明書をインストールする bashシェルで動作するスクリプトを適合させることができました:

#!/bin/bash
openssl x509 -inform PEM -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem | head -1
cert_name=$(!!).0
cat charles-proxy-ssl-proxying-certificate.pem > $cert_name
openssl x509 -inform PEM -text -in charles-proxy-ssl-proxying-certificate.pem-out nul >> $cert_name
adb Shell mount -o rw,remount,rw /system
adb Push $cert_name /system/etc/security/cacerts/
adb Shell mount -o ro,remount,ro /system
adb reboot

(はい、これはおそらくコメントであるはずですが、まだコメントとして投稿するほどの評判はありません)

5
Brian Mirletz

次の手順でTrusted Credential -> Userタブ(システムタブではなく、他の回答が表示されます)の下にserver certを表示できました。

#!/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
1
EmpireJones