Android java で HttpsURLConnection で接続できない
エラー内容はやり方によって変わるが
例えば
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
とか
SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
とか他にもいろいろ
でも、
例えば
https://www.ssllabs.com/ssltest/
でチェックすればAランクだし、SSL的には問題ないのではって思う。
どこでエラーになるかといわれると
connection.connect();
のところでエラーになる
で、調べてみたところ、yahooや自分が使っている共用サーバーだとエラーにならず、
自分のサーバーだとエラーになる。
というわけで、 https://www.ssllabs.com/ssltest/ の結果を分析してみると、TLS1.0の有効性が原因ではと思われた。
また、古い機種のAndroid(私のテスト機)の問題でもあると思われた。
とある大手推奨のコードだと
SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
SSLProxyProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
だが、
SSLProtocol -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
SSLProxyProtocol -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
にしたら、OKだった。
yahooや弊社利用の有名レンタルサーバーもTLSv1は使えるし、使ってもAランクだし、これでたぶんいいよね。