環境
- Java 6 (古い…)
- TLS 1.2
TLS1.2
脆弱性が確認されていない暗号化通信プロトコル
HTTPS通信の際にも使用される。
SSL3.0, TLS1.0, TLS1.1 は脆弱性が見つかってしまった。
HTTPS通信では使用するプロトコルを限定できるので、相手側がTLS1.2 に限定した場合はこちらも対応しなければならない
Java 6
無償版ではバージョンアップがされていないので非対応…
試行錯誤
ググったら stackoverflow で似たような事をやろうとしている記事を発見。
自分なりに整理して github に載せました。(要bouncycastle)
TLSSocketFactory
-
シンプル形式
HttpsURLConnection.setDefaultSSLSocketFactory(new TLSSocketFactory());
-
自己証明書対応
HttpsURLConnection.setDefaultSSLSocketFactory(new TLSSocketFactory(true));
-
自己証明書+ソケットタイムアウト設定
HttpsURLConnection.setDefaultSSLSocketFactory(new TLSSocketFactory(true, 60000));
HttpsURLConnection を使った通信が TLS1.2 に対応可能になります。
古いプログラムの対応等で使っていただければ嬉しいです。