Web制作メモ -トップへ-

[Apache] BASIC認証の設定方法 (ユーザー作成からディレクトリ設定まで)

Apache2015.02.10 16:52

BASIC認証を設定するには、まずユーザーを作成します。

ユーザーを作成した後、BASIC認証をかけるディレクトリを設定します。

手順はこれだけですが、CMSなどを使っていて、Web上にURLはあるがサーバーにディレクトが存在しないというような場合は、ディレクトリを作成しなければBASIC認証が有効になりませんので、その場合、ディレクトリの作成もします。

ユーザーの作成

ユーザーはhtpasswdコマンドで作成します。

ここではtestという名前のユーザーを作成します。

初めてユーザーを作成する場合は-cオプションを使います。

初めてユーザーを作成

# htpasswd -c /etc/httpd/.htpasswd test
New password: [パスワードを入力]
Re-type new password: [パスワードを入力]
Adding password for user test

上記のコマンドにより、/etc/httpd/.htpasswdファイルが作成されます。

これがApacheが参照するユーザー一覧のファイルです。

試しに/etc/httpd/.htpasswdの中を確認してみます。

# cat /etc/httpd/.htpasswd 
test:IVtqWPjTO9B0o

testというユーザーが作成されているのが分かります。

コロンの前方がユーザー名で、後方が暗号化されたパスワードです。

ユーザーを追加する場合は、-cオプションを付けずにhtpasswdコマンドを実行します。

ここでは、test2というユーザーを追加してみます。

ユーザーの追加

# htpasswd /etc/httpd/.htpasswd test2
New password: [パスワードを入力]
Re-type new password: [パスワードを入力]
Adding password for user test2

/etc/httpd/.htpasswdにtest2ユーザーが追加されました。

# cat /etc/httpd/.htpasswd
test:IVtqWPjTO9B0o
test2:thWFz4Mr/wjaI

試しにユーザーを追加してみましたが、不要なのでtestユーザーだけに戻します。

htpasswdコマンドを-cオプションで実行すれば、新たにファイルが作成され、既存のユーザーが全て削除されますのでそれを使います。

ユーザーリストを作り直す

# htpasswd -c /etc/httpd/.htpasswd test
New password: [パスワードを入力]
Re-type new password: [パスワードを入力]
Adding password for user test

これで、test2ユーザーは削除され、testユーザーだけとなりました。

# cat /etc/httpd/.htpasswd 
test:x.O6U.K/6ZgFM

次は、ここで作成したユーザーを使ってディレクトリにBASIC認証をかけていきます。

ディレクトリの設定

ディレクトリは、Apacheの設定ファイル/etc/httpd/conf/httpd.confで指定します。

viでファイルを開き、以下の設定を追加します。

ディレクトリの設定

# vi /etc/httpd/conf/httpd.conf

以下の設定を追加します。場所はどこでもよいです。

私はファイルの末尾に追加しています。

<Directory [BASIC認証をかけるディレクトリ]>
    AuthType Basic
    AuthName [認証時のメッセージ]
    AuthUserFile [先ほど作成したユーザーリストの場所]
    Require user [認証可能なユーザー]
</Directory>

以下は記述例です。

<Directory /public/preview>
    AuthType Basic
    AuthName Password
    AuthUserFile /etc/httpd/.htpasswd
    Require user test
</Directory>

ディレクトリが存在しない場合は作成

CMSなどを使っていて、Web上にURLはあるがサーバー上にディレクトリが存在しない場合、上記の設定をしてもBASIC認証が有効になりません。

有効にするには、サーバー上にディレクトリを作成する必要があります。

ディレクトリを作成する

# mkdir /public/preview

念のため、オーナーとパーミッションも他のディレクトリに合わせておきます。

# chown web:web /public/preview
# chmod 775 /public/preview
# ls -ld /public/preview
drwxrwxr-x 2 web web 4096 Feb 10 15:21 /public/preview

Apacheの再起動

Apacheの設定ファイルを変更したのでApacheを再起動します。

Apacheの再起動

# service httpd restart
Stopping httpd:    [  OK  ]
Starting httpd:    [  OK  ]

これでBASIC認証の設定完了です。

BASIC認証の動作確認

設定したディレクトリにアクセスすると以下のようにユーザー名とパスワードが求められます。

BASIC認証