2011年3月23日水曜日

Apacheでdigest認証

Apacheでbasic認証

Ubuntu Maverick Meerkat 10.10 Server Edition
VMWareとかVirtualBoxとかにUbuntuServerをインストールしてある
OpenSSH を導入しリモートログイン出来るようになっている
Apache2, MySQL, PHP5 がインストールしてある
ターミナルエミュレーターから接続して操作する




(01)Apache2の設定の確認

/etc/apache2/ apache2.conf
で、以下のように .htaccess を有効になるように設定してある

AccessFileName .htaccess

ディレクティブで
AllowOverride All
という設定がされている


(02).htpasswdファイルを設置する

.htpasswdファイルを保存するディレクトリを作る
$ cd /var/opt
$ sudo mkdir -p /var/opt/htpasswd/secret3

.htpasswdファイルを作る
引数に"で囲まれたrealmを必要とする
realmにする文字列は任意で、今回はsecret3とした
$ sudo htdigest -c /var/opt/htpasswd/secret3/.htpasswd "secret3" user1
user1のパスワードを設定する

.htpasswdファイルの存在を確認する
$ ls /var/opt/htpasswd/secret3/.htpasswd

.htpasswdファイルに新しいユーザーをパスワードを追加する
$ sudo htdigest /var/opt/htpasswd/secret3/.htpasswd "secret3" user2

注意
-cオプションをつけると以前の.htpasswdファイルを置き換える


(03).htaccessでアクセス制限をかける

アクセス制限をかけるディレクトリを作る
$ sudo mkdir /var/www/secret3

アクセスできることを確認する
http://server.ip/address/secret2/

.htaccessを設置する
$ sudo nano /var/www/secret3/.htaccess


#以下の内容を書き込む
#AuthNameの"で囲まれた文字列は、パスワードファイルを作った時に使用するrealmと同じ文字列とする


AuthUserFile /var/opt/htpasswd/secret3/.htpasswd
AuthGroupFile /dev/null
AuthName "secret3"
AuthType Digest
Require valid-user

<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>



再度アクセスし、パスワードを入力するとアクセスできることを確認する
http://server.ip/address/secret/

0 コメント: