[解決済み] Android端末に信頼できるCA証明書をインストールする方法は?
質問
独自の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>
関連
-
Androidのadbデバイスがオフラインであることが判明
-
デフォルトのアクティビティが見つからない場合の対処法
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] OpenSSLを使用して自己署名入りSSL証明書を生成する方法を教えてください。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】Homebrewは特定のバージョンのformulaをインストールしますか?
-
[解決済み】自己署名付きlocalhost証明書をChromeが受け入れるようにする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
adb シェルがデバイスのオフラインを求めるプロンプトを表示する
-
armeabi-v7a armeabi arm64-v8a パラメータの意味説明
-
例外「指定された子にはすでに親がいます」の解決方法。removeViewを呼び出す必要があります" の解決方法(ソースコード付き例)
-
JVMのエラーに遭遇しました。Java Runtime Environmentによって致命的なエラーが検出されました。
-
アンドロイドのエリプサイズを使用する
-
view.getRootView()の本当の意味とテストについて
-
AndroidでListViewを使ってカスタムテーブルを描画する
-
android bluetooth--Bluetooth on、検索、ペアリング、接続
-
超シンプルなアンドロイドのタイムディレイ機能
-
[解決済み] HttpClient over HTTPSを使用してすべての証明書を信頼する