FIRST CH TOOLS / 開発 / 67 HTPASSWD GENERATOR

htpasswd ジェネレーター(Basic認証)

ユーザー名とパスワードから、Basic認証に使う .htpasswd の行を作ります。方式は bcrypt($2y$)と apr1-md5。複数ユーザーの一括生成と、.htaccess・nginx の設定スニペットも並べて出します。パスワードはこのページの中だけで計算し、端末の外へ送りません。

1 — ユーザーとパスワード

入力のしかた
「生成」は16文字のパスワードを端末の乱数(crypto.getRandomValues)で作ります。長さや文字種を細かく決めたいときは 安全なパスワード生成 で作って貼ってください。
ハッシュの方式

2 — .htpasswd

サーバー上の .htpasswd に貼るか、保存したファイルをアップロードします。同じパスワードでも生成のたびにソルト(乱数)が変わり、別の文字列になります。
0
ユーザー数
—
方式 / コスト
—
計算にかかった時間
チェック結果
  • ユーザー名とパスワードを入れて「htpasswd を生成」を押してください。

3 — Basic認証の設定

公開ディレクトリ(public_html・htdocs など)の外に置くのが基本です。レンタルサーバーではコントロールパネルにホームディレクトリの絶対パスが出ています。
事務所の固定IPなどを入れると、そこからはパスワードなしで見られ、それ以外はBasic認証になります。空白かカンマで区切ります。
.htaccess

    
  

4 — 照合(今の .htpasswd を確かめる)

「ログインできない」ときに、ファイルの行とパスワードが合っているかをここで確かめられます。bcrypt($2y$ / $2b$ / $2a$)・apr1・$1$・{SHA} を照合できます。

ハッシュの計算・ソルトの乱数・照合はすべてこのページの中で動き、パスワードもユーザー名もサーバーへ送信しません。URLパラメータでも受け取りません(URLに載せたパスワードは、ページを開くリクエストとしてサーバーに届き、履歴にも残るため)。

How to Use

  1. ユーザーとパスワードを入れる1人なら上の欄へ、複数人なら「まとめて」で ユーザー名:パスワード を1行ずつ。パスワードを空にすると16文字を自動で作ります。
  2. 「htpasswd を生成」を押すbcrypt(推奨)か apr1-md5 の行ができます。コピーするかファイルで保存し、サーバーの公開ディレクトリの外に .htpasswd として置きます。
  3. 設定を貼る置き場所の絶対パスを入れ、出てきた設定を、守りたいディレクトリの .htaccess(nginx なら server ブロック)に貼ります。ログインできないときは「照合」で行とパスワードを確かめます。

About This Tool

公開前のステージング環境や、関係者だけに見せる確認用ページを守るのが Basic認証です。Apache なら .htaccess と .htpasswd の2ファイルで設定でき、.htpasswd には ユーザー名:ハッシュ の行を並べます。このツールは、サーバーで htpasswd コマンドを打てない環境(レンタルサーバーなど)でも、その行を手元のブラウザで作れるようにしたものです。パスワードを外部のサイトに入力したくない、という制作現場の事情に合わせ、計算はすべてこのページの中で行います。

bcrypt($2y$)を勧めます。Apache 2.4 の htpasswd -B と同じ形式で、総当たりに強いハッシュです。コストは計算の重さで、1上げると2倍になります。既定の5は htpasswd -B と同じ値です。Basic認証はリクエストのたびにサーバーがハッシュを計算し直す(画像やCSSの1ファイルごと)ため、上げすぎると全ページが遅くなります。ステージング用途なら5〜10が目安です。bcrypt はパスワードの先頭72バイトまでしか使いません。

apr1-md5($apr1$)は Apache 独自のMD5方式で、bcrypt を読めない Apache 2.2 や、OSの crypt() が bcrypt に対応していない環境の nginx でも通ります。nginx の auth_basic_user_file は apr1 を自前で読めますが、bcrypt はOSの crypt() 任せなので、使えるかはサーバー次第です。ログインできなければ apr1 に切り替えてください。

生成した行は、Apache の htpasswd -v(照合)と OpenSSL の openssl passwd -apr1 で同じ結果になることを確かめています。ソルトは端末の暗号論的乱数(crypto.getRandomValues)から取るため、同じパスワードでも生成のたびに別の行になりますが、どれでもログインできます。

Basic認証のパスワードは、通信が暗号化されていないと読める形で流れます。守る対象のサイトは必ず HTTPS で配信してください。.htpasswd は公開ディレクトリの外に置くのが基本で、やむを得ず中に置く場合も Apache の既定設定は .ht で始まるファイルの配信を拒否します。パスワード自体は 安全なパスワード生成、リダイレクトの設定は リダイレクトルール ジェネレーター、ハッシュ値の確認は MD5 / SHA-256 ハッシュ生成 が対応します。

Other Tools