HttpsUrlConnection の Fiddler を介して Android SSL トラフィックを復号化しようとして数え切れないほどの時間を費やしてきましたが、ほとんど成功していません。HttpsUrlConnection を使用して Android アプリからの SSL トラフィックを復号化するように Fiddler を確実に構成するにはどうすればよいですか?
ここに私のステップがあります
- PC で Fiddler を実行します (適切な設定: HTTPS 接続のキャプチャ、HTTPS トラフィックの復号化、リモート コンピューターの接続の許可)
- フィドラーを実行しているPCを介してプロキシするようにAndroidデバイスでワイヤレス接続を構成します
- Android デバイスからブラウザーを開き、http://[ fiddler を実行している PC の IP]:8888 にアクセスし、「FiddlerRoot 証明書」をダウンロードします。名前を付けてインストールします。
- Android ブラウザーでhttps://www.google.comを開き、PC の Fiddler で復号化されたトラフィックを表示します。
上記の作品。問題は、ブラウザー以外の Android トラフィックが接続トンネルとして Fiddler に表示されることです。私の最初の調査では、この問題は HttpsUrlConnection を介して証明書がどのように信頼されていたかが原因であることが示唆されたため、この記事https://secure.mcafee.com/us/resources/white-papers/wp-defeating-sslに基づいてすべての証明書を信頼するようにしました。 -cert-validation.pdf
残念ながら、すべての証明書を信頼しても HttpsUrlConnection ではうまくいかなかったため、調査を中止しました。数日後、もう一度試してみることにしました。驚いたことに、フィドラー トラフィックが HttpsUrlConnection で復号化されていました。残念ながら、これを修正するための変更を加えていないため、なぜ機能し始めたのか完全にはわかりません. 動作するデバイスは LG-Optimus L9 Android バージョン 4.0.4 であり、ルート化されています。
今、私はこれをNexus 7 Androidバージョン4.2.2(ルート化されていない)用に構成しようとしていますが、悲しいことに、フィドラーに表示されるのは接続トンネルだけです。両方のデバイスの証明書には同じシリアルがあり、テストしているアプリは同一であるため、別の Android デバイスで Fiddler を構成できない理由について困惑しています。
要約する
- Fiddler は LG Optimus からの SSL トラフィックを復号化できますが、Nexus 7 からの接続トンネルのみを表示します
- 両方のデバイスが、ネットワーク リクエストに HttpsUrlConnection を使用する同じアプリを実行している
- 両方のデバイスに同じフィドラー証明書がインストールされており (シリアルが一致)、他のユーザー証明書はインストールされていません。
- これらは問題ではないと思いますが...
- ルート化されたデバイス (LG Optimus Android 4.0.4) は、Proxy Droid を使用して、フィドラーを実行している PC をポイントします。
- ルート化されていないデバイス (Nexus 7 Android 4.2.2) で、組み込みの「ネットワークの変更」を使用して、フィドラーを実行している PC を指す