今日のハマりどころ
まだまだ、SNIに対応してないクライアントは沢山ある
サーバのSSL証明書を更新したらある程度古いAndroid端末からSSL通信できないという事象が発生。
ジオトラストの証明書にしたんで、きっと中間証明書かクロスルート証明書絡みなんだろうな〜と思いながら調査をしていたが、
$ openssl s_client -showcerts -connect www.mydomain.jp:443
の値も更新前の証明書の値が返ってきたりで...
ん?virtual host??
www
対象のAndroid端末はすべてDefaultHttpClientからリクエスト
以下の記事にあるように「HttpURLConnectionではSNI接続を試みる」とあるようにDefaultHttpClientではSNIに対応してないように読み取れる
http://android-developers.blogspot.jp/2011/09/androids-http-clients.html
で、対象のサーバの設定を確認してみたところ、
SNIに対応してないクライアントへはdefault virtual hostの期限切れ証明書を返していただけというオチ。
で特に複数証明書を運用するサーバでもなかったので、default virtual hostを停止したんだけど...
真剣にSNI運用しているサーバって非対応クライアントからのアクセスどうしるんだろう...