Apache/Tips/Digest 認証


mod_auth_digest.soのセットアップ・インストール

1.インストール方法

 Digest 認証を使うためには mod_auth_digest をセットアップする必要があります。Apache 1.x 系ではデフォルト(初期状態)では自動で組み込まれません。そこで、自分で apxs*1 を使ってセットアップします。

2.インストール手順

 コンパイル時に mod_auth_digest.so が静的モジュールとして組み込まれていれば、httpd.conf の中の

LoadModule digest_auth_module modules/mod_auth_digest.so

 のコメントを外すだけで大丈夫です。

 その他の場合は、apxs を使います。DSO(一般的に動的モジュールと呼ばれます)として組み込む場合は、以下の手順どおり進めてみてください。

 まず、ソースを展開したディレクトリにします。仮に展開したディレクトリ名が " /usr/local/src/apache_1.3.xx" とすると、探したいファイル mod_auth_digest.c は ./src/modules/experimental に位置します。それと apxs のパスは /usr/local/apache/bin/apxs と仮定します。パスについては、各自の環境に合わせて、適当にセットアップします。

cd /usr/local/src/apache_1.3.xx/src/modules/experimental
/usr/local/apache/bin/apxs -D DEV_RANDOM -c ./mod_auth_digest.c

 特にエラーが無ければ大丈夫です。

 通常のモジュールであれば DEV_RANDAM(/dev/random を使った乱数生成のためのオプション)不要ですが、ここは暗号化のため必要になります。もし

/usr/local/apache/bin/apxs -c ./mod_auth_digest.c

 だけしかオプションをつけないと、あとで .htaccess に Digest 認証のオプションを書き込んでも

.htaccess: Invalid command 'AuthDigestFile', perhaps mis-spelled or defined by a module not included

 このようなエラーが error_log に記録されてしまいます。

 で、話を戻しますが、

 エラーがないというのは、こんな感じです。

/usr/bin/gcc -DLINUX=22 -I/usr/include/db1 -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/usr/local/apache/include -DDEV_RANDOM  -c ./mod_auth_digest.c
gcc -shared -o ./mod_auth_digest.so mod_auth_digest.o

 次に mod_auth_digest.so を apache の modules ディレクトリにセットアップします。

/usr/local/apache/bin/apxs -i ./mod_auth_digest.so

 こちらも次のようにエラーがなければ大丈夫です。

cp ./mod_auth_digest.so /usr/local/apache/libexec/mod_auth_digest.so
chmod 755 /usr/local/apache/libexec/mod_auth_digest.so

 その次は httpd.conf の編集です。

LoadModule digest_auth_module libexec/mod_auth_digest.so

 ↑書き込む場所は適当で構いません。RPM で入っている apache にはモジュールの組み込みをクリアしてるところがあるので、一番末尾に書くのが無難かもしれません。私の場合は php の後ろに書いてます。

 この2行を追加して apache の再起動(/usr/local/apache/bin/apachectl restart)をして、あとは完了です。


*1 自動的にapacheのモジュールをコンパイルしてくれる便利なツール、と覚えておけば実務的に問題ありません

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Sun, 19 Sep 2010 20:26:33 JST (4968d)