今更な感じはありますが、よく使われるBasic認証についてメモ
apacheに.htaccessを使用させる為にhttpd.confを変更します。
<Directory />
# AllowOverride none を All に変更
AllowOverride All
</Directory>
ケース1 apacheの設定ファイルに記述する場合
httpd.confに以下を追記します。
<Directory “/var/www/html/”> ← Basic認証を設定したいディレクトリのパスを記述
AuthType Basic
AuthName “Please enter your ID and Password”
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
Require valid-user
</Directory>
apacheの設定変更をしたらapacheは再起動して下さい。
# /etc/init.d/httpd restart
ケース2 .htaccessファイルを作成する場合
Basic認証をかけたい場所に「.htaccess」ファイルを配置します。
記述は下記のような形で書きます。
<<Basic認証用設定>>
AuthType Basic
AuthName “Please enter your ID and Password”
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
Require valid-user
■ AuthType
認証方法です。Basic認証にしています。
■ AuthName
認証名、主にパスワードを求めるポップアップに表示される文字を書きます。
“”の中身が表示されます。ブラウザによっては日本語は文字化けするので
英語を使うほうが無難です。
■ AuthUserFile
パスワードファイルを指定します。必ずフルパスで記述して下さい。
できればHTTPでアクセスできないディレクトリに置いてください。
■ AuthGroupFile
グループ毎のアクセス制限に用います。
使わなければ書かなくても問題ないです。
ちなみに/dev/nullは制限しないという意味なので書かない事とあまり変わりません。
■Require valid-user
全ユーザーに認証させる設定になります。
認証ファイル「.htpasswd」を作成します。
作成場所はAuthUserFileで指定した場所です。
# htpasswd -c -b /var/www/.htpasswd user1 password
ユーザーを追加する場合
# htpasswd -b /var/www/.htpasswd user2 password
パスワードファイル(.htpasswd)の作り方 apacheを利用しない場合
<<.htpasswrd例>>
neko:gH7weU0OdCg99
cat:G.MuRtXkmfsx2
パスワードファイルの記載方法はアカウント名:パスワードになります。
複数アカウントを指定する場合は改行して次の行に記述します。
パスワードについては暗号化して記述する必要があります。
暗号化には何かしらツールを使う必要がありますが、perlのスクリプトで
暗号化させることができます。
使うのはperlのcrypt関数です。
crypt(TEXT, SALT)
TEXTは暗号化したい文字列です。SALT部分は暗号化する際のキーとなる部分です。
l
<param(‘pass’); ←ここのpassを変更したいパスワードにする。
my $encpass = &encrypt_passwd($pass);
print “Password encryption : “;
print ${encpass};
print “\n”;
exit;
sub encrypt_passwd {
my($pass)=@_;
my @salt_set = (‘a’..’z’,’A’..’Z’,’0′..’9′,’.’,’/’);
srand;
my $ida1 = int(rand(63));
my $ida2 = int(rand(63));
my $salt = $salt_set[$ida1] . $salt_set[$ida2];
return crypt($pass, $salt);
}
print部分は好みで変えてください。
SLAT部分は大文字・小文字アルファベットと 0 ~ 9 の数字、そして、
「.(ドット)」「/(スラッシュ)」のいずれか2文字にしています。
SALTもなるべく生成するたびにランダムな文字列になるほうがいいので
rand関数を使ってランダムな2文字を抽出しています。
perlとか面倒だという場合は暗号化してくれるサイトは結構あるので
そちらで暗号化してその暗号化文字をパスワード欄に記載してください。