#はじめに
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通信をキャプチャすることができるはずだ。
#参考サイト