apacheインストール後の標準状態で利用できるベーシック認証は、パスワードを平文で送信するため、通信路上でパスワードを盗聴されてしまう可能性があります。
ここで紹介するダイジェスト認証では、パスワードがサーバ側の送信する乱数により暗号化されるため、ベーシック認証よりも高いセキュリティを実現できます。
ソースコードを「http://httpd.apache.org/download.cgi」から取得し、「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
「httpd.conf」を編集し、「mod_auth_digest.so」をapache DSOに追加します。
LoadModule digest_auth_module modules/mod_auth_digest.so AddModule mod_auth_digest.c
「httpd.conf」を編集し、デフォルトで有効になっている「mod_digest.so」をコメントアウトします。
# LoadModule digest_module libexec/apache/mod_digest.so # AddModule mod_digest.c
上記の通り設定が完了したら、設定を反映させるためにapacheを再起動させます。
apacheの再起動方法については、「コマンドラインからapacheを起動/停止/再起動する」を参照してください。
「.htaccess」を編集し、ダイジェスト認証を有効にします。
「.htaccess」は、「httpd.conf」内でAllowOverrideされていないと有効にならないので注意してください。
AuthName UserCheck AuthType Digest AuthDigestFile /home/www/test/http/digest/.htdigest AuthGroupFile /dev/null Require valid-user
パスワードファイルの作成には「htpasswd」ではなく、「htdigest」を用います。
第3パラメータの「realm」には、「.htaccess」内の「AuthName」と同じものを設定してください。
$ 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.
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。