しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

7/16 に発生した障害と Azure Web サイトで IP SSL を使う場合の注意点

今回は先週の 16 日に運用している Azure Web サイトで障害が発生した話について書くことにします。何が起こったかを Twitter に書きながら対応したので、時系列に沿って紹介していきます。

珍しく早起きしたら、SSL 証明書周りで問題が発生していることに気が付きました。

少し調べてみると、何故か IP SSL を設定している Web サイトなのに、標準の *.azurewebsites.net ホストの証明書が使われるという現象が発生していました。

f:id:shiba-yan:20140724135829p:plain

ブラウザからアクセスすると、上のスクリーンショットのような警告画面になるので困りました。

とりあえず IP SSL の設定をし直したり、SNI SSL に切り替えてみたりしましたが、特に状況は改善することなく Twitter につらつらと書いていたら、帝国兵さんからとある情報を教えてもらいました。

そのまま調査をお願いしたところ、SNI SSL に切り替えたタイミングで A レコードで設定するべき IP アドレスが変わっていることを教えてもらい、すぐに DNS レコードを設定しなおしました。

とりあえず今回は IP SSL を捨てて SNI SSL に切り替えることで、ひとまず改善することが出来ました。そして、Azure Web サイトで IP SSL を使う際の注意点も同時に知ることが出来ました。

IP SSL と A レコード

今回の障害原因はまだ確定はしていませんが、障害が発生したタイミングで管理ポータルを確認したところ、仮想 IP アドレスが A レコードで設定しているものと異なっていたような気がしました。この仮想 IP アドレスが変わったため、デフォルトの証明書が使われてしまい警告が出たっぽいです。

IP SSL は IP アドレスに対して証明書を紐づけるので、A レコードで指している IP アドレスと、Azure Web サイトが内部的に管理している仮想 IP アドレスと Web サイトの関連付けが狂ったのかと見ています。*1

面白いことに、Azure Web サイトの A レコードで指定する IP アドレスは IP SSL とそれ以外で変わりますが、ホスト名が正しく指定されていれば別の IP アドレスだったとしてもアクセスは可能になります。

f:id:shiba-yan:20140724182322p:plain

例えば、自分が運用している wsoembed.com というサイトでは A レコード用の IP アドレスが .30 となっています。これを hosts ファイルを書き換えて、別の IP アドレスを指すようにして試したところ、何の問題もなくページが表示されます。

f:id:shiba-yan:20140724182210p:plain

IP アドレスは別のものに変わっていることが確認できますが、問題なく動作しています。なので、Azure Web サイトが持っているエンドポイントは、かなり数が多いのではないかと思いました。

まとめ

まとまりのない文章になったので、無理やりまとめておきます。

  • Azure Web サイトでは基本的には SNI SSL を使う
  • IP SSL はどうしても SNI SSL が使えない場合のみに使う

XP も死んだ今、SNI SSL で大抵の場合は問題ないと思います。5 サイトまで無料で標準なら使えます。

*1:正直なところ仮想 IP アドレスが変わるのは最低な挙動だと思ってる