Step2:ユーザー名とパスワードを記録する.htpasswdファイルを作成

ユーザー名(ID)とパスワードを記録した.htpasswdファイルを作る

ユーザー名(ID)とパスワードを記録した.htpasswdファイルを作る

続いて、Basic認証を設定する際に必要な2ファイルのうち、2つ目である.htpasswdファイルの作成方法をご紹介いたします。

【このページの目次】
 

ユーザー名(ID)+パスワードの収録ファイル.htpasswdを作成する概要

Basic認証では、設定を記述した.htaccessファイルとは別に、認証に使うためのユーザー名(ID)とパスワードを格納したファイルも作成する必要があります。ファイル名は「.htpasswd」というドット記号で始まる名称がよく使われますが、他の名称でも構いません。.htaccessファイル側に書いた名称でファイルを作成して下さい。

このファイルの中身もプレーンテキストなので、テキストエディタで作成できます。Windowsに付属の「メモ帳」でも問題ありません。下図のように、ユーザー名とパスワードのセットを必要なだけいくつでも列挙できます。
 
Basic認証用のユーザー名(ID)とパスワードを列挙した.htpasswdファイルの例

Basic認証用のユーザー名(ID)とパスワードを列挙した.htpasswdファイルの例

 

1行1アカウントで列挙する.htpasswdファイルの構成

この.htpasswdファイルの中身は、以下のようなシンプルな書式になっています。
ユーザー名:パスワード
ユーザー名:パスワード
ユーザー名:パスワード
ユーザー名とパスワードを半角コロン記号「:」で区切って1行ずつ列挙しているだけです。

.htpasswdファイルの記述例
例えば、3つのアカウントを作成した場合は、以下のような内容になります。
suzuki:XkB8Ou3kAcODe
yamada:5dHw0u9s4TltI
inoue:A0e7PvhEdWyvE
上記のサンプルでは、「suzuki」・「yamada」・「inoue」という3つのユーザー名と、それぞれのユーザー名に対応するパスワードが記述されています。ただし、ここでのパスワードは「パスワードそのもの」ではなく、ハッシュ化と呼ばれる方法で変換した結果を記述しています(詳しくは後述)。

なお、ユーザー名もパスワードも大文字・小文字は区別して扱われますので注意して下さい。例えば「suzuki」と「Suzuki」と「SUZUKI」は、どれも異なるユーザー名として認識されます。

 

.htpasswd内のパスワードはハッシュ化されている

上記にパスワードの記述サンプルとして示した「XkB8Ou3kAcODe」のような文字列は、本来のパスワードをハッシュ化した文字列です。「XkB8Ou3kAcODe」という文字列がパスワードなのではありません。ですから、パスワード欄に「XkB8Ou3kAcODe」と入力しても、認証は通りません。
 
元のパスワードは保存せず、ハッシュ化した後の文字列だけを.htpasswdファイルに記録する

元のパスワードは保存せず、ハッシュ化した後の文字列だけを.htpasswdファイルに記録する


※ここでパスワード文字列の変換に使っている「ハッシュ化」は、元のパスワードが分からない状態に変換される点では暗号化と似ています。しかし、暗号化された結果の場合は復号化(元の文字列に戻すこと)ができるのに対し、ハッシュ化の場合は元の文字列に戻す変換ができないという違いがあります。

このように、.htpasswdファイルに記載されるパスワードは「本来のパスワードそのもの」ではないため、直接ファイルの中身を閲覧されたとしても、本来のパスワードは分かりません。ただし、絶対に分からないわけではないので、.htpasswdファイルの中身は第三者に見られないよう隠しておく必要があります。隠すように設定する方法は、本記事の最後でご紹介いたします。

 

パスワードをハッシュ化するサービスを利用する方法

.htpasswdファイルの中身を作成するためには、何らかの方法でパスワードをハッシュ化する必要があります。Basic認証用にパスワードをハッシュ化するには、そのような変換サービスを提供しているウェブサイトがたくさんありますから、それらを利用すると良いでしょう。

.htpasswdファイルへの記録用にパスワードを変換してくれるサービス
Basic認証で使う.htpasswdファイル用にパスワードをハッシュ化してくれるサービスサイト例

Basic認証で使う.htpasswdファイル用にパスワードをハッシュ化してくれるサービスサイト例


例えば「基本認証用パスワード暗号化」ページでは、最大10個までのパスワードを一括してハッシュ化できます。

ユーザー名(ID)とパスワードのセットを必要なだけ入力してから「パスワード暗号化」ボタンを押すだけで、そのまま.htpasswdファイルにコピー&ペーストして使える書式で出力されます。

このような変換サービスは「.htpasswd 生成」などのキーワードで検索すれば多数見つかります。使いやすいサイトを利用すると良いでしょう。

 

ユーザー名(ID)とパスワードを列挙した.htpasswdファイルの作成方法

パスワードをハッシュ化できたら、ユーザー名とハッシュ化パスワードを半角コロン記号「:」で繋げて、下図のように1行1アカウントで列挙します。
 
「ユーザー名(ID)」と「暗号化パスワード」を7セット記述したところ

.htpasswdファイルの記述例(ユーザー名とパスワードを7セット記述)


 

記述できたら.htpasswdファイルを保存してアップロードする

必要なだけ記述ができたらファイルとして保存し、サーバにアップロードしましょう。

保存:
ファイル名を「.htpasswd」にしてプレーンテキストで保存

ファイル名を「.htpasswd」にしてプレーンテキストで保存


ファイル名は「.htpasswd」とするのが標準的ですが他の名称でも構いません。前ページで作成した.htaccessファイル内に記述した名称で保存して下さい。

文字コードにUTF-8を使う場合は、BOM(Byte Order Mark)を付加しない設定で保存して下さい。テキストエディタによっては「UTF-8N」と表記されています。もしWindowsの「メモ帳」を使う場合は、デフォルトの「ANSI」のままで保存して下さい。

 
アップロード場所:
保存できたらサーバにアップロードします。アップロード先は、前ページで作成した.htaccessファイル内の「AuthUserFile」項目に記述した場所です。ブラウザから閲覧できる必要はないので、ウェブ上に公開されないディレクトリに置いておくと安全でしょう。
 
.htaccess内の「AuthUserFile」に指定した場所へアップロードする

.htaccess内の「AuthUserFile」に指定した場所へアップロードする


 

準備完了: Basic認証に必要な2ファイルの作成が完了

Basic認証を利用するために用意する2つのファイル

Basic認証を利用するために用意する2つのファイル

これまでの作業で、Basic認証を利用するために必要な以下の2ファイルの準備が完了しました。
 
  1. ウェブサーバの設定を記述する.htaccessファイル
  2. ユーザー名とパスワードを記述する.htpasswdファイル

 
それでは、これまでに作成した.htaccessファイルと.htpasswdファイルを使って、実際にBasic認証を使ってみましょう