本資料はCentOS, Apache2.2.3の環境でApacheのダイジェスト認証の設定を行った手順を記しています。
iptablesなどにより外部から接続できない場合は、以下の資料が参考になるかもしれません。
使用したLinux(CentOS)の環境は以下の通りです。
# lsb_release -sd "CentOS release 5.8 (Final)" # httpd -v Server version: Apache/2.2.3 Server built: Feb 23 2012 21:16:57
httpd.confに記述されているダイジェスト認証のモジュールを有効にします。
今回使用した環境では、以下の場所にhttpd.confがありました。
/etc/httpd/conf/httpd.conf
http.conf内に以下の記述があるのでコメント(#)されている場合はコメント(#)を削除してダイジェスト認証のモジュールを有効にしてください。
LoadModule auth_digest_module modules/mod_auth_digest.so
htdigestコマンドを利用しダイジェスト認証用のパスワードを作成します。
htdigest -c ダイジェスト用パスワードファイル ダイジェスト認証を行う領域名 ユーザ
上記の-cオプションは初めてダイジェスト認証用のパスワードファイルを作成するときのオプションです。
ユーザを追加する場合(すでにファイルが存在する)、-cオプションは不要です。
以下、htdigestコマンドを実行した時の出力です。
コマンド実行後、パスワードを入力します。
# htdigest -c /etc/httpd/conf/passwd_digest 'DigestAuthArea' sakura Adding password for sakura in realm DigestAuthArea. New password: Re-type new password:
上記コマンドが完了すると以下のようにダイジェスト認証用のパスワードファイルが生成されます。
ファイル内容を見ると、ユーザ:ダイジェスト認証を行う領域名:暗号化されたパスワード の順に記録されています。
# cat /etc/httpd/conf/passwd_digest sakura:DigestAuthArea:86f8c9c196fa4294b88379f6dc65a8d1
今回使用した環境デフォルトのままであり、以下のように設定されています。
DocumentRoot "/var/www/html" : : : <Directory "/var/www/html"> : :
本資料では、<Directory "/var/www/html"> 中略 </Directory>にダイジェスト認証の設定を行います。
変更した内容は以下の通りになります。
<Directory "/var/www/html"> AuthType Digest AuthName "DigestAuthArea" AuthUserFile "/etc/httpd/conf/passwd_digest" Require valid-user :
追加したのは、以下の4つです。
AuthType Digest AuthName "DigestAuthArea" AuthUserFile "/etc/httpd/conf/passwd_digest" Require valid-user
AuthTypeにはDigest
AuthNameには、htdigestコマンドで指定したダイジェスト認証を行う領域名を設定
AuthUserFileには、htdigestコマンドで指定したダイジェスト用パスワードファイルを設定
Require valid-userを追記しました。
Apacheが既に起動している場合は、Apacheを再起動します。
停止している場合は、Apacheを起動してください。
今回は、CentOSを利用しているので以下のコマンドで起動、停止、再起動ができます。
service httpd start
service httpd stop
service httpd stop
ブラウザを起動してDigest認証を設定したホストに接続します。
きちんと設定されていれば、以下のように認証画面が表示されます。
iptablesなどにより外部から接続できない場合は、以下の資料が参考になるかもしれません。