Apache ダイジェスト認証の設定

November 4, 2010 – 11:22 am

Apache ダイジェスト認証により、非公開のテスト用Webサイトへのアクセスをコントロールしようということで、ダイジェスト認証を使うことにした。ダイジェスト認証を設定する方法を備忘録というかたちで簡単にメモしておいた。

htdigestコマンドによる設定: ダイジェスト認証の対象とするユーザー、パスワードはhtdigestコマンドを使って以下の書式で設定することができる

    htdigest [-c]  パスワード保存ファイル レルム ユーザー名

パスワードを保存するファイルを/etc/httpd/.htdigest、 レルムをTest Zone,  ユーザー名をguestとし,このコマンドを実行すると、

	# htdigest -c /etc/httpd/.htdigest 'Test Zone' guest
	Adding password for guest in realm Test Zone.
	New password:
	Re-type new password:

これで、パスワード保存用ファイル/etc/httpd/.htdigestが生成される:

           guest:Test Zone:e3f851c8f3225fd60586cebaa79eb8b081ed336e

なお、パスワード保存ファイルは、上記した例では、/etc/httpd/.htdigest としたが任意のファイル名とすることができる。

digest 認証の反映: 上記で作成したユーザー認証用パスワードをApacheの設定ファイル  /etc/httpd/conf/httpd.conf  上に以下のディレックティブを追加してやる:

    <Directory "/var/www/test/">
         AuthType Digest
         AuthName "Test Zone"
         AuthDigestDomain /
         AuthUserFile /etc/httpd/.htdigest
         Require valid-user
    </Directory>

これで、Apacheを再起動すれば、/var/ww/test をドキュメントルートとするサイトにアクセスするユーザーの認証が行われる。

  	# service httpd restart
	httpd を停止中:                        [  OK  ]
	httpd を起動中:                        [  OK  ]

設定に際して留意すべきことを以下に記述しておく:

  1.  htdigest コマンドの -c オプションは「パスワード保存ファイル」を生成する際に用いる。ユーザー/パスワードを追加するには、このオプションをはずしてコマンドを実行すればよい。なお、同名の「パスワード保存ファイル」が既に生成されている場合、新規に作り直される。
  2.  htdigestコマンドのレルム(上記例では、Test Zone)はapache設定ファイルに追加するディレクティブ内の AuthName に与える。
  3.  Apacheのディレクティブにたいしては、上記例では、「Require valid-user」としたが、この場合、レルムが共通のユーザーにたいして有効になる。単一のユーザーのみのアクセスを認める場合、valid-user に代えて ユーザー名(上記例では guest)を与える

Post a Comment