t.marcusの外部記憶装置

忘備録とかちょっとした考えとかをつらつらと...

Apache HttpClient4.3でSSLの証明書とホスト名のチェックを回避する

Hostsファイルにローカルアドレスを書いて、httpsでしか口が開いていないサーバにリクエストを投げると、

javax.net.ssl.SSLException: hostname in certificate didn't match

↑みたいな例外を投げられて(´A`)ってなるので、
オレオレ証明書javaに登録するか、SSL証明書のチェックを回避して、リクエストするみたいな処理をするかの二通りになる。

前者はググれば結構情報見つかるけど、手順が面倒くさそうなので、後者で…

Apache HttpClient4.2だと下みたいなコードで、SSLの証明書とホスト名のチェックを回避出来たけど、

Apache HttpClient v4.2(org.apache.httpcomponents.httpclient:4.2.5)版

gist01f9c5228913c24d25f1

4.3になってからSSLSocketFactoryとかSchemeRegistryとかSchemeとかが@Deprecatedになったので
以下みたいな書き方をしないとダメっぽい。

Apache HttpClient v4.3(org.apache.httpcomponents.httpclient:4.3.4)版

giste7da2f90fd962cedc780

基本的なことは、4.3のjavadocとかに書いてあるので、それにそって、適宜ポーティングする感じ。
ただ、4.2と比較すると4.3はコード量が多い…