1. ホーム
  2. android

[解決済み] Android端末に信頼できるCA証明書をインストールする方法は?

2022-05-05 12:10:05

質問

独自のCA証明書を作成し、それをAndroid Froyoデバイス(HTC Desire Z)にインストールし、デバイスが私の証明書を信頼するようにしたいのです。

AndroidはCA証明書をJavaのキーストアに格納し /system/etc/security/cacerts.bks . このファイルを自分のコンピュータにコピーし、証明書を ポルテクル1.5 で、それを端末にプッシュする。

現在、Androidは自動的にファイルを再読み込みしてくれないようです。いくつかのブログ記事で、デバイスを再起動する必要があることを読みました。そうすると、ファイルが再び元のものに上書きされてしまいます。

次に試したのは、SDカードから証明書をコピーして、設定メニューのaccordingオプションを使用してインストールすることでした。デバイスは証明書がインストールされたことを教えてくれますが、どうやら証明書を信用していないようです。さらに、キーストアをコンピューターにコピーしようとすると、まだ元の在庫があります。 cacerts.bks .

では、自作のルートCA証明書をAndroid 2.2端末に信頼できる証明書としてインストールするには、どのような方法があるのでしょうか。プログラム的に行う方法はあるのでしょうか?

どのように解決するのですか?

Android KitKat以前は、新しい証明書をインストールするために、デバイスをroot化する必要があります。

Android KitKat (4.0) からMarshmallow (6.0) まで 可能であり、簡単です。私は、Charles Web Debbuging Proxy cert を root 化されていないデバイスにインストールし、SSL トラフィックのスニッフィングに成功しました。

より抜粋 http://wiki.cacert.org/FAQ/ImportRootCert

Android バージョン 4.0 より前、Android バージョン Gingerbread & Froyo では、Android でデフォルトで信頼されるすべての CA (「システム」) 証明書を含むトラストストストアが存在する単一の読み取り専用ファイル ( /system/etc/security/cacerts.bks ) が存在しました。システムアプリとAndroid SDKで開発されたすべてのアプリケーションの両方が、これを使用します。Android Gingerbread、Froyo、...にCAcert証明書をインストールするには、以下の手順を参照してください。

Android 4.0 (Android ICS/'Ice Cream Sandwich', Android 4.3 'Jelly Bean' & Android 4.4 'KitKat') 以降、システムの信頼できる証明書は、個々のファイルとして '/system/etc/security/' フォルダのシステムパーティションの(読み取り専用)上に存在するようになりました。しかし、ユーザーは自分の「ユーザー」証明書を簡単に追加できるようになり、「/data/misc/keychain/certs-added」に格納されるようになりました。

システムにインストールされた証明書は、Android デバイスの設定 -> セキュリティ -> 証明書 -> 「システム」セクションで管理できますが、ユーザーが信頼する証明書は、「ユーザー」セクションで管理されます。ユーザーが提供する証明書を使用する場合、PINコード、パターンロック、またはパスワードによるロック解除が必須となるため、AndroidはAndroidデバイスのユーザーに追加の安全対策を実施するよう強制します。

CAcert証明書を「ユーザー信頼型」証明書としてインストールするのは非常に簡単です。新しい証明書を「システム信頼済み」証明書としてインストールするにはより多くの作業が必要ですが(そしてルートアクセスが必要)、Androidのロックスクリーンの要件を回避できるという利点があります。

Android N (7.0)からは からの抜粋をご覧ください。 シャルルプロキシサイト :

Android Nでは、アプリに設定を追加する必要があります。 チャールズ・SSL・プロキシで生成されたSSL証明書を信頼するようにします。 つまり、SSLプロキシを利用できるのは、自分が開発したアプリのみです。 を制御します。

アプリがシャルルを信頼するように設定するためには アプリにネットワークセキュリティ設定ファイル このファイルによって システムのデフォルトをオーバーライドし、ユーザーがインストールした CA証明書(例:Charlesルート証明書)。指定することができます。 これは、アプリケーションのデバッグビルドにのみ適用されます。 実運用環境では、デフォルトの信頼プロファイルを使用します。

res/xml/network_security_config.xml をアプリに追加してください。

<network-security-config>    
    <debug-overrides> 
        <trust-anchors> 
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="user" /> 
        </trust-anchors>    
    </debug-overrides>  
</network-security-config>

次に、以下のように、アプリのマニフェストにこのファイルへの参照を追加します。

<?xml version="1.0" encoding="utf-8"?> 
<manifest>
    <application android:networkSecurityConfig="@xml/network_security_config">
    </application> 
</manifest>