仕事でハマったのでメモ。
#そもそもSSLの仕組み
仕様自体が難しいので、足場固めが必要ですね。。
こちらが非常にわかりやすいです。コメントも必読。
httpsだからというだけで安全?調べたら怖くなってきたSSLの話!?
こちらもわかりやすいです。
理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話
#自己署名証明書(オレオレ証明書)の対応
CentOS 6.5 OpenSSLでオレオレ認証局
検証環境の作成は、こちらを参考にさせてもらいました。すごく丁寧。
##UrlConnenction
例外の説明や、SSL通信のデバッグが大変ためになりました。
JavaでSSL証明書の検証無効化、ホスト名検証の無効化…とデバッグ
##HttpClient
StackOverFlowのコード、最新(2015/1/26で4.5.1)だとdeprecatedだらけだなあ。。
と思ってたら本家にサンプルありました。
https://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientCustomSSL.java
#古いバージョンのJavaで「Could not generate DH keypair」Runtime例外が発生する
例えば、JDK1.6.0_65でApacheが以下の設定だと発生します。
ApacheでOpenSSLのセキュリティを強化する
回避策
Java: Why does SSL handshake give 'Could not generate DH keypair' exception?
JavaバージョンあげるかJCE Providerを設定するのが正攻法。
Java 7 and Could not generate DH keypair
こちらのChristophの回答だと、環境変更できない場合の回避策があります。
取扱注意ではありますが。