トップ  > サーバ設定:運用  > 各アプリケーションのインストール  > Webページパスワード制限(htpasswd)

Webページパスワード制限(htpasswd)  (最終更新日:2009/12/07)

特定のページへのアクセスにアカウントによるアクセス制限をかけます。

ここではアクセス制限をかけるページをhttps://www.rx-93dff.net/secret/とし、アクセスできるアカウントをユーザ名:user_m・パスワード:user_passとします。

ユーザ名、パスワードを使用しますので、SSL経由のみの接続とします。

Webサーバ構築(Apache)Webサーバ間通信内容暗号化が導入されていること。

Webサーバ設定

Apacheのインストール時、当サイト通りにしている場合は「.htpasswdファイル作成」に進んで下さい。

[root@sv ~]# vi /etc/httpd/conf/httpd.conf ← Webサーバー設定ファイル編集
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
AllowOverride None
↓
AllowOverride All ← .htaccessの許可

[root@sv ~]# /etc/rc.d/init.d/httpd reload ← Webサーバー設定反映
httpd を再読み込み中:                                      [  OK  ]

.htpasswdファイル作成

1..htpasswdファイルを新規作成する場合
[root@sv ~]# htpasswd -b -c /etc/httpd/conf/.htpasswd user_m user_pass ← .htpasswdを作成してユーザuser_mを登録する
Adding password for user user_m
2.既存の.htpasswdファイルへユーザを追加する場合
[root@sv ~]# htpasswd -b /etc/httpd/conf/.htpasswd user_m user_pass ← 既存の.htpasswdへユーザuser_mを登録する
Adding password for user user_m
3.登録ユーザ確認
[root@sv ~]# cat /etc/httpd/conf/.htpasswd ← ユーザー登録確認
user_m:xxxxxxxxxxxxx ← 登録したユーザがあるのを確認

htpasswdコマンド入力する際、以下のオプションを追加すると表示方法が変更できます。
 -m  パスワードをファイルに書き込む際、MD5 でハッシュします。
 -d  パスワードをファイルに書き込む際、CRYPT でハッシュします(デフォルト)。
 -p  パスワードをファイルに書き込む際、ハッシュしないでそのまま書き込みます。
 -s  パスワードをファイルに書き込む際、SHA でハッシュします。

動作確認

1.テスト環境作成
[root@sv ~]# mkdir /var/www/html/secret ← テスト用ディレクトリ作成

[root@sv ~]# echo test > /var/www/html/secret/index.html ← テスト用ページ作成
2..htaccessファイル作成(.htpasswdに登録してある全てのユーザー名で認証できるようにする場合)
[root@sv ~]# vi /var/www/html/secret/.htaccess ← テスト用ディレクトリに.htaccess作成
ここから----------
SSLRequireSSL
AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "secret page"
AuthType Basic
require valid-user
----------ここまで
3..htaccessファイル作成(.htpasswdに登録してあるユーザ名でのみ認証できるようにする場合)
[root@sv ~]# vi /var/www/html/secret/.htaccess ← テスト用ディレクトリに.htaccess作成
ここから----------
SSLRequireSSL
AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "secret page"
AuthType Basic
require user user_m ← 許可するユーザ名を入力
----------ここまで
4.表示確認
  1. https://サーバ名/secret/にアクセスしてユーザ認証画面が表示され、ユーザ名にuser_m、パスワードにuser_passを入力してページが表示されることを確認。
  2. http://サーバ名/secret/でアクセスした場合、エラーになることを確認。
  3. 特定ユーザ名での認証を許可している場合、特定ユーザ以外でエラーになることを確認。
5.確認後の後始末
[root@sv ~]# rm -rf /var/www/html/secret/ ← テスト用ディレクトリ削除

[root@sv ~]# rm -f /etc/httpd/conf/.htpasswd ← テスト用.htpasswd削除
.htpasswdファイルを既に使用している場合、vi等で該当する行を削除します。