FiddlerでEclipseのSSL通信をキャプチャする


javaのSSLソケットを使った通信の内容をキャプチャしたい

javaで特定のキーストアを用いたSSLクライアントを実装していますが、ローカル(Eclipse)で動作確認をする際にFiddlerでさくっと通信内容をキャプチャしたり加工したかたったので、その方法をメモします。
なお、今回、利用したFiddlerのバージョンは「v4.6.2」です。

JVMにプロキシを設定する

Eclipseの内部サーバ(Tomcat)のHTTP通信がFiddlerを経由するように、JVMオプションにプロキシサーバの情報を設定します。

Fiddlerのポート番号を確認する

デフォルトのポート番号は「8888」ですが、いちおう、Fiddlerのリッスンポートを「Tools」>「Telerik Fiddler Options」>「Connections」で確認します。

JVMパラメータにプロキシの設定を追加する

Eclipseの「Window」>「Preferences」>「Tomcat」>「JVM設定」より、JVMパラメータに以下を追加します。

jvm設定内容
-DproxyPort=8888
-DproxyHost=127.0.0.1
-DproxySet=true

以上で、Eclipse内のHTTP(S)の通信がFiddlerでキャプチャできるはずですが、今回は特定のキーストアを使う必要があったため、FiddlerのSSLルート証明書をそのキーストアに追加します。

キーストアにFiddlerのSSLルート証明書を追加する

Fiddlerのルート証明書をエクスポートする

Fiddlerの「Tools」>「Telerik Fiddler Options」>「HTTPS」よりActionボタンを押下し、「Export Root Certificate to Desktop」を選択し、証明書をデスクトップにエクスポートします。

キーストアに証明書を追加する

keytoolコマンドで、上記でエクスポートした証明書をキーストアに追加します。
keytoolは「JAVA_HOME\jre\bin」にあります。

keyttolコマンド
keytool.exe -import -file <エクスポートしたFiddlerのルート証明書のパス> -keystore <キーストアのパス> -alias Fiddler

完了

以上で、特定のキーストアを用いたjavaのSSL通信の内容を、Eclipseで動作させた際にFiddlerでキャプチャできるようになりました。