mitmproxyエージェントJAVAを使用してHTTPS要求を適用する


背景の問題
設定-Dhttps.proxyHost=localhost -Dhttps.proxyPort=8080 JAVAアプリケーションのすべてのHTTPS要求がmitmproxyエージェントによって発行されるようにする.結果として以下のエラーが得られる.
Server access Error: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested ...
環境
Mac OSX 10.10.2
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

ソリューション
mitmproxyの証明書をJDKのデフォルトのkeystoreにインポートします.
sudo keytool -importcert -alias mitmproxy  \
-keystore  \
-storepass  \
-trustcacerts \
-file ~/.mitmproxy/mitmproxy-ca-cert.pem

passwordデフォルトはchangeit
keystoreパスの確認
scala -e 'import java.net._; new URL("https://www.wacai.com").openConnection.asInstanceOf[HttpURLConnection].disconnect' -Djavax.net.debug=SSL | grep "trustStore is"