掲題について、apacheのバージョンでハマった話です。ATSについての説明はいろんなサイトがやっているので割愛します。残念なことに、ATSについて理解が及んでいない為、私から説明するのが難しい。
目次
ATS対応でハマる
事の発端はこんなお話だった。
1.Opensslのバージョンが古く脆弱性まみれなのでアップデートする。
2.暗号化スイートが古いので、変更してATSに対応させる。
よく理解していない事が多々あるものの、何度もやっている事なので特に懸念事項もなくモリモリ作業をしていた。で対応が終わったので意気揚々とSSL LABSで診断して見たところ、ATSの結果に以下が帰ってきた。
Apple ATS 9 / iOS 9 R Server sent fatal alert: handshake_failure
Opensslのアップデートによって脆弱性は消えたものの、肝心のATSのチェック項目で赤文字が…コンフィグを間違えたのかもと見直してみたが、ATS対応が上手くいったサーバと見比べても変わりなし…と思っていたが、チェック結果のCipher Suitesを確認すると、ECDHEが何故か有効になっていない。
ATS対応が有効になっているチェック結果を確認すると、"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"の暗号化スイートが使われている為、どうやらこれが原因のようだ。
【対応】apacheのバージョンを上げてみる
“openssl ciphers -v"を打つと、対象のOpensslでEDCHEが使えるようになっているので、試しにapacheのバージョンを上げていった。
2.2.22→×
2.2.25→×
2.2.27→○
…どうやらapacheのバージョンが問題だったようだ。その後色々調べていくと、apacheがECDHEの暗号化スイートをサポートしたのは、2.2.26以降というのが分かった。同じようにハマっている人は、apacheのバージョンをあげましょう。
※又はこれ以外の解決方法をご教示下さい。。
…なんというか備忘録的に記述したものの、これは自分が一番嫌がっている、"よく分かってないけど○○を変えたら出来た!"系の話じゃないか…セキュリティ周りの知識も浅すぎる事を通関、いつか理由も含めてここの解説が出来るように頑張ります。とりあえず、なんでこうなるのか解決出来るように頑張ります。