タグ別アーカイブ: Digest認証

Basic認証よりセキュアなDigest認証を使う方法

よく.htaccessで、認証制限をかけたいページにこんなの書いてますよね。

AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /path/to/.htpasswd
require valid-user

然し、Basic認証って実は入力したユーザ名とパスワードを平文で送信してしまうのです。
つまり、通信パケットを監視されていれば、認証に必要な入力情報をカンタンに拾えてしまうという事。

そこで、認証情報をMD5暗号化して送信するDigest認証。
詳しい仕組みは下記を参照のこと。
http://ja.wikipedia.org/wiki/Digest%E8%AA%8D%E8%A8%BC

自分でApacheのコンフィグを操作できる場合、下記コンフィグが読み込まれているか確認しましょう。
レンタルサーバの場合は対応がまちまちなので、各々お問い合わせください。

# Apache2.2以下:/etc/httpd/conf/httpd.conf
# Apache2.4以降:/etc/httpd/conf.module.d/00-base.conf
LoadModule auth_digest_module modules/mod_auth_digest.so

パスワードの作成は「htpasswd」コマンドの代わりに「htdigest」コマンドを使います。
※パスワードファイルの名前は自由ですが、Apacheの標準設定では「.ht」から始まるファイル名は全て表から閲覧できないようになっています。
なので、パスワードファイルを複数作る際は「.htdigest.loginuser」や「.htadmin」といったように
ファイル名が「.ht」から始まるようにしましょう。

htdigest (オプション引数) "(パスワードファイルのパス)" "(レルム)" (ユーザ名)
↓例↓
htdigest -c "/path/to/.htdigest" "Digest Auth" user001

.htaccessには、上記例を参考にするとこういう記述になるはず。
※AuthName(レルム)が一致していること。

AuthType Digest
AuthName "Digest Auth"
AuthUserFile "/path/to/.htdigest"
Require valid-user