- blogs:
- cles::blog
Java の HttpsURLConnection で証明書検証を無効にする
java sslJava には HttpsURLConnection というクラスが用意されているので、これを使うと簡単に WebAPI を叩くクライアントが開発できます。
ところが、このクラスはきちんと接続先のサーバの SSL 証明書の検証を行うようになっているので、開発用にオレオレ証明書を使っていたりすると以下のようなエラーが出ることがあります。
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
これを回避するためには、きちんと証明書ストアをつくってそこに証明書を登録する方法もありますが、今回は開発用に検証を無効化してみました。
当たり前のことですが、これを使うとサーバの証明書がどのようなものでも HTTPS 通信が確立してしまうというセキュリティ上の問題が生じますので開発用途以外での利用はオススメできません。
ちなみに HttpsURLConnection の SSL の検証の仕様については「JSSEリファレンス・ガイド」で解説されています。今回はホスト名を検証する HostnameVerifier、鍵を管理する KeyManager、証明書を信頼するかどうかを管理する TrustManager の3つを無効化しています。
具体的なサンプルは以下から。
† Java の HttpsURLConnection で証明書検証を無効にするサンプル
プロジェクトは hsur/DisableSSLCertificateChecking にアップロードしてあります。
disableSSLCertificateChecking() の部分がキモで、この部分をコメントアウトすると、エラーが出るようになる様子を確認できるはずです。
App.java
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9662
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
- シャープの空気清浄加湿器の... (1)
- SMARTEK デジタル温湿度計 (1)
2 . Word で数式がグレーアウトされていて挿入できないときは(15269)
3 . awk で指定した n カラム目以降を出力する(11792)
4 . アーロンチェアのポスチャーフィットを修理(11588)
5 . Windows 10 で勝手にログアウトされないようにする(9787)