ATS対応(CentOS+Apache編)
Qiitaにまとめるほどでもないので、ブログにでも。
iOS9から導入されたATS機能をONにしたアプリで、サーバー側のWeb APIを実行するとエラーになってしまった。(具体的にはSSLハンドシェイクのタイミングでNG)
サーバー側の環境は、よくあるLAMP環境で、CentOSは6.4系、Apacheは2.2.15-28というバージョンだった。ApacheのSSL周りの設定はこんな感じ(分かりやすいようにちょっと改変してる)。
SSLProtocol ALL -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ALL
ATSの仕様をみると、TLSv1.2が有効となっていて、SSLCipherSuiteはECDHが有効となっていれば問題なさそうなので、Apacheの設定は大丈夫そう。
でも、何故かエラーが解消せず困っていたのですが、結局mod_sslのバージョンが古く、このバージョンだとECDHに対応していなかった。
ということで、mod_ssl(とhttpd)のバージョンをhttpd-2.2.15-47にしたところアッサリ解決。
(2.2.15-31以降であれば大丈夫っぽい。あと、これはCentの独自パッケージなので、ソースからコンパイルするときは2.2.3-x系からがよさそう。)
気付いてしまえば何てことないのですが、まだATSの情報が少なく、苦戦しました。。
【参考URL】
App Transport Security Technote: App Transport Security Technote
mod_ssl-2.2.15-47.el6.centos.x86_64 RPM