Androidで、自己署名証明書を入れようとしたら”証明書をインストールするには、秘密鍵が必要です” と出る

ALL
スポンサーリンク

Android11以降では、自己署名証明書を入れようとしたら、下の画像のように「証明書をインストールするには、秘密鍵が必要です」と出てインストールできません。
プライベート認証局(オレオレ認証局)の証明書作成時に、本記事で説明の設定が必要です。

証明書作成で、CA証明書を作成する際に、証明書の詳細で X509v3 Basic Constraints: CA:TRUE となるように設定が必要です。

例えば、以下のようにしてCA証明書・サーバー証明書を作成します。CA証明書作成時に、basicConstraints の CAフラグが true となるようにしています。
(basicConstraints=CA:true を記述したファイルを、CA証明書作成時に -extfile で指定します)

echo 'basicConstraints=CA:true' > android_options.txt

openssl genrsa 2048 > ca.key
openssl req -utf8 -new -key ca.key -out ca.csr
openssl x509 -in ca.csr -out ca.crt -req -signkey ca.key -days 3650 -sha256 -extfile ./android_options.txt

openssl genrsa 2048 > server.key
openssl rsa -in server.key -out server.key
openssl req -utf8 -new -key server.key -out server.csr
openssl x509 -in server.csr -out server.crt -req -CA ca.crt -CAkey ca.key -days 3650 -sha256 -CAcreateserial

あとは、上記で作成されたCA証明書(ca.crt)を、Androidスマホに持って行ってインストールします。

インストールは、Android13では設定-セキュリティ-セキュリティの詳細設定-暗号化と認証情報-証明書のインストール-CA証明書 から行います。

参考

system – How to get Android 11 to trust a user root CA without a private key? – Android Enthusiasts Stack Exchange

コメント