Android KitKatより前のバージョンでは、新しい証明書をインストールするためにデバイスをルート化する必要があります。
Android KitKat(4.0)からNougat(7.0)まで可能で簡単です。ルート権限を取得していないデバイスにCharles Web Debbuging Proxy証明書をインストールして、SSLトラフィックを正常に盗聴できました。
http://wiki.cacert.org/FAQ/ImportRootCertから抽出
Androidバージョン4.0より前、AndroidバージョンGingerbread&Froyoでは、デフォルトで信頼されているすべての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 /」フォルダーの(読み取り専用)システムパーティションにあります個々のファイルとしてのセキュリティ/ '。ただし、ユーザーは「/ data / misc / keychain / certs-added」に格納される独自の「ユーザー」証明書を簡単に追加できるようになりました。
システムがインストールした証明書は、Androidデバイスの[設定]-> [セキュリティ]-> [証明書]-> [システム]セクションで管理できますが、ユーザーが信頼する証明書は[ユーザー]セクションで管理されます。ユーザーが信頼する証明書を使用する場合、AndroidはAndroidデバイスのユーザーに追加の安全対策を実施することを強制します。ユーザー提供の証明書を使用する場合、PINコード、パターンロック、またはパスワードを使用してデバイスをロック解除する必要があります。
CAcert証明書を「ユーザーが信頼する」証明書としてインストールするのは非常に簡単です。「システムが信頼する」証明書として新しい証明書をインストールするには、さらに多くの作業が必要です(ルートアクセスが必要です)が、Androidのロック画面要件を回避できるという利点があります。
Android N以降は少し難しくなります。Charles プロキシウェブサイトからのこの抜粋をご覧ください。
Android N以降、Charles SSLプロキシによって生成されたSSL証明書をアプリに信頼させるには、アプリに設定を追加する必要があります。つまり、制御するアプリでのみSSLプロキシを使用できます。
Charlesを信頼するようにアプリを設定するには、ネットワークセキュリティ設定ファイルをアプリに追加する必要があります。このファイルはシステムのデフォルトを上書きし、ユーザーがインストールした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>