-
Notifications
You must be signed in to change notification settings - Fork 37
PacketProxyのCA証明書の各OSへのインストール方法
PacketProxyを利用してTLS通信をMITMするには、各OSのトラストストアへPacketProxyのCA証明書をインストールすることが必要になります。
手順の流れは、PacketProxyのCA証明書をエクスポート後、それを各OSのトラストストアにインストールするという流れになります。
- PacketProxyの
Options
タブの下図に示すボタンからエクスポートできます。- 出力ファイル名は、
packetproxy-ca.crt
とします。 - 出力フォーマットは、自動的にDER(バイナリ形式)になります。
- 出力ファイル名は、
下記の手順で、システムのトラストストアにCA証明書をインストールできます。
$ openssl x509 -inform der -in packetproxy-ca.pem -out packetproxy-ca.pem
$ openssl x509 -noout -subject_hash_old -in packetproxy-ca.pem
16b7b0ea
$ mv packetproxy-ca.pem 16b7b0ea.0
$ adb push 16b7b0ea.0 /sdcard/
$ adb shell
android> su
android# mount -o rw,remount /system
android# cp /sdcard/16b7b0ea.0 /system/etc/security/cacerts/
android# chmod 644 /system/etc/security/cacerts/16b7b0ea.0
android# mount -o ro,remount /system
また、もしMagiskを利用しているのであれば、CA証明書をMagiskモジュールにしておき、それをMagiskからインストールすることでCA証明書をデプロイすることもできます。
Root化端末を持っていない場合は、下記の方法で、CA証明書をユーザ定義のトラストストアにインストールすることができます。
-
PacketProxyのCA証明書をAndroid端末にコピーします。
$ adb push packetproxy-ca.crt /sdcard/Download/
-
Androidのシステム設定画面からCA証明書をインポートします。
さらに、下記の手順で、アプリ毎にユーザ定義のトラストストアの利用許可設定をしておく必要があります。
-
APKを展開します。
- Apktool等のツールを使ってAPKを展開します。
-
展開したAPKのAndroidManifest.xmlを修正します。
- 下記のように
AndroidManifest.xml
にnetworkSecurityConfig
を追加します。<application android:networkSecurityConfig="@xml/network_security_config" ...>
- 下記のように
-
展開したAPKにネットワークセキュリティ設定を追加します。
- 下記内容のxmlファイルを
res/xml/network_security_config.xml
に追加します。<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system"/> <certificates src="user"/> </trust-anchors> </base-config> </network-security-config>
- 下記内容のxmlファイルを
-
APKをリパッケージ・署名し、Androidにインストールします。
- Apktool等を使ってAPKをリパッケージし、apksignerで署名した上で、Androidにインストールします。
注意点として、アプリによってはユーザ定義のトラストストアを利用せず常にシステムのトラストストアのみ利用するケースや、独自のトラストストアを使うケースもあります。そのような場合には、別の方法(例えばコード改ざんをしてTLSライブラリ中のサーバ証明書のチェック関数(verify関数)を無効にする等)が必要になります。
iOSのシステムのトラストストアへCA証明書をインストールするには、Apple Configuratorを使います。Jailbreak端末は必要ありません。
- MacでApple Configuratorを起動します。
-
ファイル
メニューから新規プロファイル
を選択します。 - 新規プロファイル設定画面の左ペインから
証明書
機能を選択し、右ペインの構成
ボタンからpacketproxy-ca.crtを下記のように読み込ませます。
- packetproxy-ca.mobileconfigとして、任意のディレクトリにプロファイルを保存します。
- ライトニングケーブルでiPhoneをMacに接続します。
- AppleConfigurator上でiPhoneが検出されるので、検出したiPhoneを選択後
Action
→追加
→プロファイル
から、先ほど作成したプロファイルをiPhoneにインストールしてください。 - プロファイルをiPhoneにインストールできたら、iPhoneの
設定
→一般
→情報
→証明書信頼設定
から下記のようにCA証明書を有効化すれば完了です。
もしJailbreak端末を利用しているのであれば、SSL Kill Switch 2等のツールを使うことで、サーバ証明書のverify処理自体を無効化するという荒技を使うこともできます。
- Finderでpacketproxy-ca.crtをダブルクリックすることで、キーチェーンアクセスアプリにCA証明書をロードします。
- ロードしたCA証明書に対して
右クリック
→情報を見る
を選択し、プロパティを表示します。 - プロパティのドップダウンリストで
常に信頼
を選択し保存します。
- DigiCertのWebページを参考にしてインストールできます。