.htpasswdをつくる

.htpasswdは、Basic認証を設定する時につかいます。
ログインを許可するユーザ名と、そのパスワードがMD5というフォーマットで暗号化された内容が書かれています。

VirtualHostでBasic認証を設定のとき作ろうとしたら細々つまずいたで、そのメモ。
“C:/dummyName/projectName/”へ.htpasswdを設置し
「test_name」というユーザを登録します。

Apacheについている htpasswd.exe を使う

ネット検索で、.htaccessのパスワード暗号化を行なってくれるツールもいくつか見つかったのですが
パスワードの暗号化のところがうまく噛み合わず、Basic認証がとおらなかったので
今回はApacheについている htpasswd.exe からファイルごと生成する方法を紹介します。

まず、コマンドプロンプトを起動し(Macだったらターミナルでいけるのかな)
Apacheインストールディレクトリの bin まで移動し、実行コマンドを入力。

$ cd C:\(Apacheインストールディレクトリまでのパス)\bin\

Windows XPだったら、権限の管理がけっこう適当なので
このコマンドで.htpasswdのファイルを生成して且つ
test_nameというユーザと暗号化されたパスワードも登録できます。

$ htpasswd "C:/dummyName/projectName/" test_name
New password:【ここでパスワードを入力】
Re-type New password:【ここでパスワードを入力】

が、Windows7 で同じことをしたら、権限の問題でこうなります。

$ htpasswd "C:/dummyName/projectName/" test_name
$htpasswd.exe: cannot create file C:/dummyName/projectName/

ディレクトリのパーミッションなど小手先でいろいろ変えながら検証してみた結果
ファイルを新規作成するのがNGっぽい。
なので、先に中身が空の.htpasswdという空ファイルだけ先に設置してからコマンドを実行します。

エクスプローラで新規作成しようとすると
「ファイル名を入力してください。」
というダイアログがでて設置させてもらえません。

ここは、テキストエディタで新規作成した何も書いてないファイルを
「ファイルの種類」「すべてのファイル(*.*)」で
.htpasswdという名前で保存するのが手っ取り早いです。

改めてコマンドを実行。
XPのときと微妙に違っていて .htaccessのパスを指定する部分が
C:/dummyName/projectName/終わりではなく.htpasswdまで指定にかわっています。

$ htpasswd "C:/dummyName/projectName/.htpasswd" test_name
Automatically using MD5 format.
New password: 【ここでパスワードを入力】
Re-type new password: 【ここでパスワードを入力】
Adding password for user test_name

これで、test_nameとパスワードの組み合わせが.htpasswdへ書き込まれました。
実際にBasic認証で使うときの手順はVirtualHostでBasic認証を設定で。

関連記事

Pocket