TLSバージョンを指定して接続確認
会社のiOSアプリ開発チームより、
ガラケー対応の外部の古いウェブサイトにアプリからHTTPS接続できないとのこと。
詳しく聞いてみると、iOSのバージョン10未満で発生していて、
TLS1.2 → 1.1 → 1.0 のfallbackする箇所がうまく動いてなさそうに見える。
対象サーバが TLS1.0 なら利用可能であることを確認したい。
これは openssl を使って、TLSバージョンを指定して接続すればわかる。
openssl s_client -connect {HOSTNAME}:443 -ssl2 openssl s_client -connect {HOSTNAME}:443 -ssl3 openssl s_client -connect {HOSTNAME}:443 -tls1 openssl s_client -connect {HOSTNAME}:443 -tls1_1 openssl s_client -connect {HOSTNAME}:443 -tls1_2
諸々と情報が出力されるが、成功したかどうかなら終了ステータスの確認でOK。
異常終了なら終了ステータスが 0 以外で、即時終了する。
成功した場合は入力を待つので、「GET /」とでも打ってステータス 0 で終了すればよい。
最終的には、利用するTLSの上限/下限とも TLS1.0 になるよう指定することで解決したとのこと。
TLS1.2 未満は POODLE の脆弱性があるものの、ガラケー対応システムなら仕方のないことだろう。
ガラケーかセキュリティか、どちらかを捨てなければならない。
ふつうはガラケーだろうけども。