カテゴリー: 開発ツール

htpasswd ジェネレーター

サイト側で企画したツールツールが見つからない?

Basic 認証のパスワードファイル用エントリーをローカルで作成

Apache の htpasswd 行をブラウザー内で生成します。bcrypt の Basic 認証情報を作り、パスワードをサーバーに送ることなく .htpasswd のエントリーをコピーまたはダウンロードできます。

1 段階上げるごとに攻撃者の手間が倍になり、このページが行を生成する時間も倍になります。ほとんどのサーバーでは 10〜12 が適切です。

htpasswd の行
ここに結果が表示されます。

bcrypt がパスワードから読み取るのは最大 72 バイトまでで、それ以降は無視されます。このページでも、あなたのサーバーでも同じです。

ファイルは公開ディレクトリの外に保存し、AuthUserFile でそこを指してください。配信されるディレクトリ内の .htpasswd はダウンロードされてしまいます。

パスワードはこのタブ内でハッシュ化されます。どこにも送信されず、保存もされません。生成された行も同様です。

このページの処理はすべてブラウザ内で行われます。アップロードは一切ありません。

このツールでできること

.htpasswd ファイルは `ユーザー名:ハッシュ` という記録が並んだ単純な一覧で、Apache の Basic 認証はログインをこれと照合します。nginx も auth_basic_user_file で同じ形式を読みます。このページはその記録をあなたの端末上で組み立てます。bcrypt の実装はタブ内で動くため、パスワードが外に出ることはありません。bcrypt を既定にしているのは、意図的に遅く、1 件ごとにソルトが付くからです。それが、盗まれたファイルの解読を高くつくものにします。コストのスライダーは、それをどれだけ遅くするかを決めるものです。SHA-1 は bcrypt を受け付けないほど古いサーバー向けにのみ用意しています。ソルトがなく高速であることを、選ぶその場所に明記しています。

使い方

  1. ユーザー名とパスワードを入力するか、ランダムなパスワードを生成します。
  2. bcrypt のままコストを選びます。ほとんどのサーバーでは 10〜12 が適切です。
  3. 行をコピーするか .htpasswd ファイルをダウンロードし、公開ディレクトリの外に保存します。

プライバシー

このツールはすべてブラウザ内で動作します。入力した内容がアップロード・保存・共有されることはなく、タブを閉じれば消えます。

よくある質問

パスワードはアップロードされますか?
いいえ。ハッシュはブラウザーのタブ内で計算されます。パスワード、ソルト、生成された行のいずれも、どこにも送信・記録・保存されません。
どのハッシュを選ぶべきですか?
サーバーが本当に対応していない場合を除き、bcrypt です。エントリーごとにソルトが付き、意図的に遅いため、ファイルを盗んだ攻撃者は 1 回の推測ごとに実時間を費やす必要があります。SHA-1 はソルトがなく解読が速いため、互換性のためだけに存在します。
bcrypt のコストは何をするものですか?
鍵準備の繰り返し回数を 2 の対数で表したもので、1 段階上げるごとに作業量が倍になります。攻撃者にとっても、ログイン時のサーバーにとっても同じです。10〜12 が通常の落としどころで、それ以上にするとこのページの処理も目に見えて遅くなります。
出力を nginx で使えますか?
はい。nginx は auth_basic_user_file で同じファイル形式を読み、bcrypt のエントリーに対応しているため、ここで生成した行は Apache でも nginx でも使えます。
ファイルはどこに置くべきですか?
サーバーが公開するディレクトリの外に置き、AuthUserFile でそのパスを指します。配信されるフォルダー内に .htpasswd があると、誰でもハッシュをダウンロードしてオフラインで解読を試みられます。