#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パラメータに以下を追加します。
-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」にあります。
keytool.exe -import -file <エクスポートしたFiddlerのルート証明書のパス> -keystore <キーストアのパス> -alias Fiddler
#完了
以上で、特定のキーストアを用いたjavaのSSL通信の内容を、Eclipseで動作させた際にFiddlerでキャプチャできるようになりました。