小技プログラミング

BASIC認証を設定

BASIC認証を設定する手順です。

【 apacheの主設定ファイルでBASIC認証を設定する場合 】

Apacheの設定ファイルにBASIC認証の設定を追加します。

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

<Directory "/home/example.com/public_html">
AuthType Basic
AuthName "Secret Zone"
AuthUserFile /etc/httpd/.htpasswd
Require valid-user
</Directory>

(参考)
AuthType 認証方式を指定
AuthName 認証画面に表示するメッセージを指定
AuthUserFile パスワードファイルを指定
Require アクセスを許可するユーザーやグループを指定
valid-userはパスワードファイルに含まれるすべてのユーザー&グループを許可
個別指定する場合は、user group オプションを指定し、
許可するユーザー名やグループ名を半角スペースで区切って指定します。

ユーザ追加

# htpasswd /etc/httpd/.htpasswd ユーザ名入力
New password:パスワード入力
Re-type new password:パスワード再入力

(参考)

※.htpasswdファイルを新規作成する場合は以下のように -c オプションを付ける
既にある場合は中身がクリアされるので注意。

# htpasswd -c /etc/httpd/.htpasswd ユーザ名入力
New password:パスワード入力
Re-type new password:パスワード再入力

※パスワードを付け替える場合

# htpasswd /etc/httpd/.htpasswd ユーザ名入力
New password:パスワード入力
Re-type new password:パスワード再入力

※ユーザを削除する場合

# htpasswd -D /etc/httpd/.htpasswd ユーザ名入力

設定ファイルの構文チェック
構文にエラーが無いか確認します。Syntax OKとなれば構文上は問題ありません。

# apachectl configtest
Syntax OK

設定ファイルのリロード

# /etc/rc.d/init.d/httpd reload

ブラウザでアクセス確認して完了

【 .htaccessでBASIC認証を設定する場合 】

BASIC認証を掛けるディレクトリに.htaccessファイルを作成します。

# vi /home/example.com/public_html/.htaccess

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthType Basic
AuthName "Secret Zone"
AuthUserFile /etc/httpd/.htpasswd
Require valid-user

最初の行の<Files ~タグ内の設定はhtaccess、htpasswdファイルをブラウザ経由でアクセスさせないように設定しています。

※.htaccessによる設定を有効化させる為には、主設定ファイルhttpd.confでAllowOverrideの設定を変更しておく必要があります。
すべてのディレクトリに対して有効化させる場合。

<Directory />
AllowOverride None
↓変更
AllowOverride AuthConfig
</Directory>

※サーバ処理能力低下とセキュリティ面から.htaccessの利用は推奨されていません。
(参考)http://httpd.apache.org/docs/2.0/ja/howto/htaccess.html

AllowOverrideディレクティブに設定可能な値
AuthConfig 認証に関するディレクティブの使用を許可する (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require など)。
FileInfo ドキュメントタイプを制御するディレクティブ (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime の Add* と Remove* ディレクティブなど)
ドキュメントのメタデータを制御するディレクティブ (Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)
mod_rewrite のディレクティブ RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule) と mod_actions の Action ディレクティブの使用を許可する。
Indexes ディレクトリインデックスを制御するためのディレクティブの使用を許可する。 (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName など)
Limit ホストへのアクセス制御を行うためのディレクティブの使用を許可する (Allow, Deny, Order).
Options[=Option,...] 特定のディレクトリにおける機能を指定するためのディレクティブの使用を許可する (Options と XBitHack)。 Options で設定するオプション を、(空白を含めない) コンマ区切りのリストにして等号の後に続けることで 設定できます。

https://httpd.apache.org/docs/2.2/ja/mod/core.html#allowoverrideより抜粋

ユーザ追加

# htpasswd /etc/httpd/.htpasswd ユーザ名入力
New password:パスワード入力
Re-type new password:パスワード再入力

htaccess設定の場合アクセス時に自動で読み込まれる為apacheのリロードは必要ありません。