ApacheでDigest認証を設定する方法

2010年2月14日

ある特定のWebページにパスワード認証を掛けるとき、一番簡単なのものとして Basic認証があります。しかしこれはパスワード情報をそのままの状態でサーバに送信して しまうため非常に危険です。

これに対して、パスワードを暗号化して送信するのがDigest認証です。

ブラウザの対応状況もよく、IE5以降やMozilla1.0以降の最近のブラウザならば対応しています。

/var/www/hogeにDigest認証をかける例を見てみましょう。
また、アクセスを許すユーザはusername1, username2, username3とします。

OSはDebianとします。

Redhat系だとApache設定ファイルへのパス等が異なるため参考程度にしてください。

1
2
3
4
5
6
$ touch /etc/apache2/htdigest
$ htdigest /etc/apache2/htdigest "hogezone" username1
$ htdigest /etc/apache2/htdigest "hogezone" username2
$ htdigest /etc/apache2/htdigest "hogezone" username3
$ cd /etc/apache2/mods-enabled
$ ln -s ../mods-available/auth_digest.load

htdigestコマンドはルート権限で実行するようにしてください。 そうしないと/etc/apache2/htdigestファイルに設定内容が反映されません。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ vi /etc/apache2/mods-enabled/hoge.conf      <-- 自分の設定ファイル
    # 上記ファイルhoge.confに、以下内容を記述します。
    Alias /hoge/ "/var/www/hoge/"
    <Directory "/var/www/hoge">
            AuthType Digest
            AuthName "hogezone"
            AuthDigestDomain /hoge/
            AuthUserFile /etc/apache2/htdigest
            Require user username1 username2 username3
            BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
    </Directory>

# あとは、Apacheを再起動すればOKです。
% /etc/init.d/apache2 restart