はじめに

Charlesというアプリケーションで、通信のリクエストやレスポンスを確認することができるが、SSLの通信は暗号化されており少し設定をしないとのぞくことができない。その方法を紹介する。なお、このアプリケーションは無料でも使用可能だが、無料版は一度の起動に制限時間がありそれをすぎると自動で閉じてしまうなど制限がある。

設定

Mac(Charles)

まずは Proxy > Proxy Settings でHTTPのポートを8888となっていることを確認する。この番号は後にAndroidの方で使用する。

次に Proxy > SSL Proxying Settings でキャプチャしたいドメインを指定する。e.g.: *.sample.com

最後に Help > Local IP Addressで自分のIPを確認する。この番号も後にAndroidの方で使用する。

Android

ここからAndroidの設定だが、まずはAndroidのChromeブラウザで、http://charlesproxy.com/getssl へアクセスして証明書をダウンロード、インストールする。しかし新しいバージョンのAndroidではインストールが失敗する場合がある。その場合は下記で対処する。

MacのCharlesのメニューのHelp > SSL Proxying > Save Charles Root Certificate
から証明書ファイルをダウンロードしファイルの拡張子を.pemから.cer変更、GoogleDriveなどのクラウドを使ってそこからAndroidへダウンロードを行う(方法はなんでも可)。Androidのダウンロードフォルダから証明書ファイル開くと、証明書をインストールするダイアログが表示される。ダイアログで証明書の名前を入力し、PINもしくはパターンを入力しインストールを完了させる。

最後に、AndroidのWifiへの設定を行う。Androidの設定アプリ> Wi-FiでSSID一覧を開き、使用したいSSDを長押し、Modify network を選択。Advanced Optionを開き下記のように設定する。

パラメータ
Proxy Manual
Proxy hostname 上記で確認したLoacal IP
Proxy Port 上記で確認したPort
Bypass proxy for 空欄でOK
IP settings DHCP

ここまでの設定を行えば、Charlesを起動し、Androidのデバック実行することで、希望するSSL通信をキャプチャすることができるはずだ。

参考サイト

https://community.tealiumiq.com/t5/Tealium-for-Android/Setting-up-Charles-to-Proxy-your-Android-Device/ta-p/5121

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.