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ランクだし、これでたぶんいいよね。