はじめに

apacheインストール後の標準状態で利用できるベーシック認証は、パスワードを平文で送信するため、通信路上でパスワードを盗聴されてしまう可能性があります。
ここで紹介するダイジェスト認証では、パスワードがサーバ側の送信する乱数により暗号化されるため、ベーシック認証よりも高いセキュリティを実現できます。

「mod_auth_digest.so」を構築する

ソースコードを「http://httpd.apache.org/download.cgi」から取得し、「mod_auth_digest.so」を構築します。

「mod_auth_digest.so」のビルド
$ tar zxvf apache_1.3.xx.tar.gz
$ cd apache_1.3.xx/src/modules/experimental
$ apxs -c -D DEV_RANDOM mod_auth_digest.c
$ apxs -i mod_auth_digest.so

「mod_auth_digest.so」をapache DSOに追加する

「httpd.conf」を編集し、「mod_auth_digest.so」をapache DSOに追加します。

「mod_auth_digest.so」のDSOへの追加
LoadModule digest_auth_module modules/mod_auth_digest.so
AddModule mod_auth_digest.c

「mod_digest.so」をapache DSOから削除する

「httpd.conf」を編集し、デフォルトで有効になっている「mod_digest.so」をコメントアウトします。

「mod_digest.so」のDSOからの削除
# LoadModule digest_module      libexec/apache/mod_digest.so
# AddModule mod_digest.c

上記の通り設定が完了したら、設定を反映させるためにapacheを再起動させます。
apacheの再起動方法については、「コマンドラインからapacheを起動/停止/再起動する」を参照してください。

「.htaccess」を設定する

「.htaccess」を編集し、ダイジェスト認証を有効にします。
「.htaccess」は、「httpd.conf」内でAllowOverrideされていないと有効にならないので注意してください。

「.htaccess」の編集
AuthName UserCheck
AuthType Digest
AuthDigestFile /home/www/test/http/digest/.htdigest
AuthGroupFile /dev/null
Require valid-user

パスワードファイルを作成する

パスワードファイルの作成には「htpasswd」ではなく、「htdigest」を用います。
第3パラメータの「realm」には、「.htaccess」内の「AuthName」と同じものを設定してください。

「htdigest」によるパスワードファイルの作成
$ htdigest -c .htdigest UserCheck user

動作確認

以下のようにtelnetを用いてwebサーバにリクエストを上げてみてください。

動作確認方法の例
$ telnet www.kishiro.com 80

GET /test/http/digest/ HTTP/1.1
Host: www.kishiro.com

以下のようなレスポンスが返ってくればOKです。

動作結果の例
HTTP/1.1 401 Authorization Required
Date: xxx, xx xxx xxxx xx:xx:xx GMT
Server: Apache/1.3.xx (Unix)
WWW-Authenticate: Digest realm="UserCheck", nonce="+aMKQA==601deb03200d618fb62e5
76094eea8e85dbb576e", algorithm=MD5, qop="auth"
[中略]
Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>401 Authorization Required</TITLE>
</HEAD><BODY>
<H1>Authorization Required</H1>
This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.<P>
<HR>
<ADDRESS>Apache/1.3.xx Server at www.kishiro.com Port 80</ADDRESS>
</BODY></HTML>

Connection closed by foreign host.


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。