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)が使えません。
ダイジェスト認証に対応してないようです。

Home