ぬけラボ

φ(..)メモメモ

Basic認証を使用したサイトの構築(CentOS+Apache)

Basic認証の設定方法。
仕事で必要になったので忘れる前にメモメモ。

Basic認証は、Webページにアクセスした時に
ユーザー名とパスワードが要求されるあの機能。

いちをOSとApacheのバージョン

# cat /etc/redhat-release
CentOS release 5.6 (Final)

# httpd -v
Server version: Apache/2.2.3
Server built:   May  4 2011 06:51:15

認証ユーザの追加


認証に使用したいユーザのログイン名とパスワードを.htpasswdファイルに設定する

新しく.htpasswdファイルを作成する場合
#htpasswd -c -b /etc/httpd/conf/.htpasswd user1 password

既にある.htpasswdファイルにユーザを追加する場合
#htpasswd -b /etc/httpd/conf/.htpasswd user2 password

Basic認証を有効にする


Basic認証を有効にさせるためにApache設定ファイルの最終行に以下を追記

#vim /etc/httpd/conf/httpd.conf

<Directory "/var/www/html/">      ← Basic認証を設定したいディレクトリのパスを記述
      AuthUserFile /etc/httpd/conf/.htpasswd      ← 認証ユーザーの設定ファイルのパスを記述
      AuthGroupFile /dev/null
      AuthName "Basic Auth"
      AuthType Basic
      Require valid-user
</Directory>

最後にApacheの再起動

#/etc/init.d/httpd restart

これでおk。
Basic認証を設定したページにアクセスして認証ダイアログが表示されることを確認。

.htaccessファイルを使用する場合

Apacheの設定ファイルにBasic認証の設定を記述する以外に
.htaccess ファイルを使用してBasic認証を行う方法がある。

Apacheのアナウンスでは、

Apache チュートリアル: .htaccess ファイル
http://httpd.apache.org/docs/2.2/ja/howto/htaccess.html

httpd.conf にアクセスできない場合を除いて、
.htaccess ファイルの使用は極力避けてください。

となっているが、とりあえず。
httpd.confに記述した方が実行速度が速いらしい

.htaccessを使用するための設定


Apache.htaccessを使用させるためにhttpd.confを変更する

#vim /etc/httpd/conf/httpd.conf

291行目付近
<Directory />
      # AllowOverride none を All に変更
      AllowOverride All
</Directory>

.htaccessファイルの編集


Basic認証をかけたい場所に.htaccessファイルを配置する

#touch /var/www/html/.htaccess

#vim /var/www/html/.htaccess

AuthUserFile /etc/httpd/conf/.htpasswd      ← 認証ユーザーの設定ファイルのパスを記述
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
require user user1, user2      ← ユーザ名(user1とuser2)を指定する

最後にApacheの再起動

#/etc/init.d/httpd restart

ちなみに、
Basic認証Base64という方式で暗号化されている。
しかし、このBase64は簡単に解析できてしまうので、

Basic認証を使うときは、
SSL(HTTPS)暗号化と併せて使った方がいいみたいです。