Apacheでパスワードによるアクセス制限を掛ける方法

サーバー設定

Webサーバ「Apache 2.4」において、パスワードを使ったアクセス制限の掛け方を紹介します。
ページを特定の人だけに公開したい場合に便利な方法です。

今回は、BASIC認証方式を利用して、CentOS上のApache2.4に設定を行います。

User-Agentを用いたアクセス制限の方法はこちら

アクセス制限に使える「BASIC認証」とは

BASIC認証とは、Webサイトで利用できる認証方式の一つです。
アクセス制限の掛かったページを開くと、以下の画像のようにユーザ名とパスワードを求められることがあります。
BASIC認証

このダイアログに正しいユーザ名とパスワードを入力しない限り、ページを見ることはできません。
簡易機能のため本格的な会員サイトなどには向きませんが、ちょっとした制限やパスワードを掛けたい場合に使うことができます。

BASIC認証は、Webサイトのディレクトリ単位もしくはファイル単位で設定して使用します。今回はディレクトリに対して設定を行います。

Apacheで使用するパスワードファイルを作成する

BASIC認証を行うためには、まず「パスワードファイル」を用意する必要があります。
中にはユーザ名とパスワードを記録されており、サーバ上でコマンドを実行して作成します。

例として、ユーザ名を suzuki、パスワードを abc12345 とする場合は下記のコマンドを実行します。

$ htpasswd -c /etc/httpd/conf/.htpasswd suzuki
New password:   ←パスワードを入力
Re-type new password: ←パスワードを入力
Adding password for user suzuki

パスワードファイルが作成されているので確認します。

$ cat /etc/httpd/conf/.htpasswd
suzuki:$apr1$zdTX0y12$rV690s/Ed7ye.1TUM47fn/

パスワードがハッシュ化されて保存されていることが分かります。

パスワードによるアクセス制限を有効化する

パスワードファイルが準備できたため、次はアクセス制限の設定を有効化します。

まずはテスト用のディレクトリを作成して試すことをお勧めします。
誤ってサイト全体に設定してしまうと、その瞬間からアクセス制限が掛かってしまうためです。

今回は test01 ディレクトリに設定するため、test01 の中に .htaccess ファイルを作成します。

$ vi /var/www/html/test01/.htaccess
AuthUserFile /etc/httpd/conf/.htpasswd
AuthType Basic
AuthName "Test Page"
Require valid-user

.htaccess を有効化するため、Apacheの設定ファイル httpd.conf も変更しておきます。

$ vi /etc/httpd/conf/httpd.conf
#
# 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  ←この部分を「None」から「All」に変更

Apacheを再起動して確認します。
suzuki / abc12345 でアクセスできれば成功です。

まとめ

Apacheでパスワードを使ったアクセス制限を掛ける方法について紹介しました。

.htpasswd ファイルと .htaccess ファイルを組み合わせることで、ユーザ名とパスワードによる認証を行えます。

限られた人に公開したいページや、作成途中のページなどで活用してみてください。

【関連記事】