Fiddlerを使ってiPhoneのHTTPS通信を傍受

前提

HTTP。名前は聞いたことがある方が殆どかと思います。
例えばこのブログのURLは「http://ark-n.hatenablog.com/」です。HTTP通信を使用してページの中身を頂戴!とやってるわけです。


このHTTP、いわばデータが「丸見え」です。
悪意を持った第三者がそれを傍受してちら見したり書き換えたりとかできちゃいます(ARP spoofingってやつですね)。
それだと秘密の情報をやり取りするのにまずいのは明らかです。
どうにかできないものか。頭の良い人達が一つの解決策を作りました。これがHTTPS通信です。


詳しい説明はWikipediaに譲るとして、簡単な説明を。
この手法は、送る内容を毎回暗号化して受け渡しします。
これで第三者が盗み見たりとかができなくなりました。素晴らしいですね。


でも、開発者とかには少し困ったことが出てきます。
なんたって、誰も読めない状況ですから開発者自身も何を送ってるのか見えません。
一時的に読める状況で扱いたい場合というのは出てくるわけです。
そこで、Fiddlerを使って通信を傍受、監視する手法を使うことになるわけです。
以下紹介する手法はiPhoneのものですが、基本はAndroidの場合も同じだと思われます。

必要なもの

・無線環境
iPhone
・パソコン

方法(PC側)

  1. まずFiddlerをダウンロード、導入します。http://getfiddler.com/
  2. 証明書発行に必要なプラグイン「CertMaker for iOS and Android」を導入します。http://www.telerik.com/fiddler/add-ons
  3. Fiddlerを起動、Tools→Optionsで設定を開きます。
  4. HTTPSタブで、「decrypt HTTPS traffic」にチェックを入れます。
  5. 「Trust the Fiddler Root certificate?」と聞かれるので、YESを押します。
  6. Connectionタブで、「Allow remote computers to connect」にチェックを入れます。
  7. Fiddler再起動します。
  8. Fiddlerを全画面表示にして、右上にある「Online」の上にマウスを持っていきます。
  9. するとIPアドレスが表示されるので、メモしておきます。

これでPC側の準備は完了です。Fiddlerを閉じないようにしてください。

方法(iPhone側)

  1. Wi-Fi設定を開き、HTTPプロキシを開きます。
  2. サーバ欄に先ほどメモしたIPアドレス、ポート欄に「8888」、認証をOFF(そのまま)にします。
  3. safariを開き、URL欄に「http://ipv4.fiddler:8888」と打ち込みます。
  4. 「FiddlerRoot certificate」をクリックして、証明書をダウンロードします。
  5. ダウンロードした証明書を認証、インストールします。
  6. 「一般」→「情報」→「証明書信頼設定」から、先ほど導入した「DO_NOT_TRUST_FiddlerRoot」をONにします。

以上で前準備が完了です。


これでiPhoneからの暗号化された通信がFiddler上に表示されます。
終わった後は証明書の無効化とHTTPプロキシの設定解除を忘れないようにしましょう。