Amazon ELB と Digest 認証の組み合わせがうまくいかない
Amazon のロードバランサー ELB (Elastic Load Balancing) 環境の下で、Web サーバに Digest 認証を設定すると、認証できなかったり、異様に時間がかかるなど、上手くいかないケースがあります。
実際に発生したのは ELB の下に Web サーバが複数ある構成です。Web サーバの Apache にはそれぞれ同じ Digest 認証を設定しています。
このとき、各Webサーバ の Apache エラーログには、以下のようなエラーが大量に出ていました。
1 2 3 4 5 6 7 8 9 10 11 |
[Wed Sep 23 18:39:40 2015] [error] [client 198.51.100.1] Digest: invalid nonce EEbF5GYgBQA=046e5393a40f5bd64bbb58d78b33bd767439c3ba received - hash is not 87b0fcae1cf6b1fedb344d4a9d1f04e5184610f7 [Wed Sep 23 18:39:40 2015] [error] [client 198.51.100.1] Digest: invalid nonce MQ3G5GYgBQA=41caee0261f5b57c089dac0c142c713c43854d38 received - hash is not 99eebdc3d87f30ff06ee9508862b880eabec587b [Wed Sep 23 18:39:40 2015] [error] [client 198.51.100.1] Digest: invalid nonce FdTG5GYgBQA=54552de873d570e65aa00d42d4b81671e6686f70 received - hash is not 1a119782139328214a6fb7d1c614139d5eab73d4 [Wed Sep 23 18:39:40 2015] [error] [client 198.51.100.1] Digest: invalid nonce dZ3H5GYgBQA=9718dee0419403f3e7f599d5b15467aa61f730a9 received - hash is not 71ec0d8f92e282ee44a5f15c77d6c9dce271d331 [Wed Sep 23 18:39:40 2015] [error] [client 198.51.100.1] Digest: invalid nonce J2PI5GYgBQA=0c69b225c314fcce0bd5f78c5a12d0f571af3ee8 received - hash is not 68a4a3a08a6122e657200ec49d3c00f60f582bc9 [Wed Sep 23 18:39:40 2015] [error] [client 198.51.100.1] Digest: invalid nonce mzDJ5GYgBQA=4e22d500775fd0108de105df62bcafa304c0f9fd received - hash is not 429324c098e7d3c5661a7ff5a5736d3df5c6e37a [Wed Sep 23 18:39:40 2015] [error] [client 198.51.100.1] Digest: invalid nonce yPrJ5GYgBQA=556599ddd4ef4c52a1869cb3cf36071565c17139 received - hash is not 2a30e26d323b8643b38691ab93a9ab81e98295ec [Wed Sep 23 18:39:40 2015] [error] [client 198.51.100.1] Digest: invalid nonce W8bK5GYgBQA=0fb31426461c9b8eda5f01e5d8010c5b6c01f7c4 received - hash is not 9ce266912e370ef863949b16894a9b09fd0352fe …… |
Digest 認証は最初は401エラーを返し、ブラウザはそのときに返されるランダムな文字列(nonce) を使って再度アクセスして認証を試みます。このときに nonce を発行した web サーバとは別の webサーバに接続してエラーとなるという現象を繰り返していたようです。たまたま同じサーバに連続アクセスしたときだけ認証できます。
これは、ELB の維持設定がアプリケーションの cookie を使って振分をするようになっているため、ログイン前の状態ではサーバへの振り分け用 Cookie が発行されていないために発生していたと思われます。
対処方法としては、ELB の維持設定を「ロードバランサーによって生成された Cookie」に変更すればよいと思います。
上記で解決しない場合や、ロードバランサーのCookie を使用できないケースでは、セキュリティの強度は落ちますが、Digest 認証ではなく Basic 認証を使用することでも回避可能です。
SSL を併用しているなど要件的に Basic 認証でも問題が無い場合はそのような選択肢もあり得ると思います。
ITエンジニア募集中!
キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。
下記よりITエンジニア募集の採用情報をご覧いただけます。