Apache ダイジェスト認証
- ■ はじめに
Apache も参考にして下さい。
Apache「設定 -2- (認証)」で、Web ページの認証の設定をしました。
これは、「ベーシック認証」という方式です。
ベーシック認証は、ポップアップ画面に入力された ID とパスワードを MIME(BASE64)エンコードして送信します。
従って、パケットを盗聴・デコードされれば、ID とパスワードがばれてしまいます。
これに対して、「ダイジェスト認証」という方式では、ブラウザはサーバーから受け取ったチャレンジ(nonce:ナンス)
などを使って算出(MD5 ハッシュ)したレスポンスをサーバーに送信し、認証を要求します。
このため、盗聴されてもパスワードがばれる可能性は極めて低くなります。
しかしながら、ダイジェスト認証はあまり使われていません。
メジャーなブラウザが長らく対応していなかったためで、
Internet Explorer で対応しているは、5.0 以降です。
- ■ 手順
1 ダイジェスト認証モジュール(mod_auth_digest)の組み込み
(1) JAPAN APACHE USERS GROUP から Apache を入手します。
現時点では、apache_1.3.27.tar.gz が最新でした。
/usr/src に保存しました。
(2) 展開
cd /usr/src
tar xvfz apache_1.3.27.tar.gz
(3) コンパイル
cd apache_1.3.27/src/modules/experimental
(usr/sbin/)apxs -c -D DEV_RANDOM mod_auth_digest.c (注)
(4) インストール
(usr/sbin/)apxs -i mod_auth_digest.so
(注) apxs:APache eXtenSion tool
拡張モジュールを Apache にインストールするツールです。
apxs を利用するには、Apache が mod_so モジュールと一緒にビルドされている必要があるそうです。
httpd -l で確認できます。
# httpd -l
Compiled-in modules:
http_core.c
mod_so.c
suexec: enabled; valid wrapper /usr/sbin/suexec
また、乱数生成に /dev/random を用いるため、コンパイル時に
-D DEV_RANDOM というパラメータを指定しています。
2 httpd.conf 修正
以下の内容を追加します。
LoadModule digest_auth_module modules/mod_auth_digest.so
AddModule mod_auth_digest.c
<Directory /home/*/public_html>
AllowOverride AuthConfig
</Directory>:
3 パスワードファイルの作成
/usr/bin/htdigest -c /etc/httpd/conf/userpass.digest 領域名 ユーザ名
4 .htaccess の作成
以下のような記述を含む.htaccess をユーザ認証するディレクトリ(public_html)に置きます。
AuthType Digest
AuthName 領域名
AuthDigestFile "/etc/httpd/conf/userpass.digest"
Require user ユーザ名
5 備考
無事、動作しました。
が、このページでは私が普段利用するダウンロードツール(ReGet)が使えません。
ダイジェスト認証に対応してないようです。