Nouplo

htpasswd生成

Apacheが求める行を、自分の機械の中で。

例を読み込むと入力と設定が一時的に変わります。元の内容に戻せます。

0文字
出力
上に貼り付けるか入力すると、ここに結果が表示されます。

ファイルは端末の外に出ません

このツールはすべてブラウザ内で動作します。貼り付けた内容は端末内で処理され、サーバーには送信されないため、トークンや鍵、未公開の文章でも安心して使えます。

使用例

例:公開前のサイトにBasic認証、2人分の .htpasswd をbcryptで作る

リニューアル中のサイトを確認用のサーバーに上げ、お客さま用と社内用の2つのIDだけで見られるようにします。入力欄には「client:Kaede-Nami-0427」と「staff:Yuzu-Tsuki-1103」を1行ずつ(どちらも例です)。ハッシュ方式はbcrypt、コスト10、接頭辞 $2y$ のままです。

  1. 「生成する」を押すと、1行目は client:$2y$10$kWX3R6hpPR7EGvtf/PskHO0xfftPlXpAdjDiAE5VroxPQu5hIC1i2 のようになります。行数2、コスト2^10と表示されます。
  2. ユーザー名のあとのハッシュは60文字です。「$2y$10$」のあとの22文字がソルトで、毎回ランダムなので、もう一度押すと別の文字列になります。どちらも同じパスワードで通ります。
  3. 2行を .htpasswd に保存し、公開フォルダの外に置きます。
  4. .htaccess には AuthType Basic、AuthName "Restricted"、AuthUserFile(.htpasswd の絶対パス)、Require valid-user の4行を書きます。
ハッシュ方式 できる行の形(1行目) ハッシュの長さ
bcrypt(コスト10) client:$2y$10$…60文字
APR1(Apache MD5) client:$apr1$(ソルト8文字)$…37文字
SHA-1 client:{SHA}…33文字(ソルトなし)

ブラウザでサイトを開くとIDとパスワードを聞かれ、2人だけが入れます。パスワードはハッシュにしてもとに戻せないので、相手にはパスワードそのものを別の方法で伝えます。

使い方

  1. 1行に ユーザー名:パスワード の形で入力します。パスワードだけならハッシュだけが出ます。
  2. 既存のファイルに合わせる場合を除き、bcryptのままにしてください。
  3. 「生成する」を押します。bcryptは意図的に遅いので少し待ちます。それが目的です。
  4. 出た行を .htpasswd に貼り付けます。

よくある質問

パスワードはどこかに送られますか。
送られません。このページが存在する理由がそこにあります。ソルトはブラウザ自身の乱数生成器から取り、ハッシュ化もお使いの機械の中で行われ、何も送信されません。本物のパスワードを他人のサーバーに貼り付けることこそ避けるべきことです。
なぜ時間がかかるのですか。
bcryptはそうなるように作られているからです。コストは2のべき乗なので、1つ上げると攻撃者の手間が倍になり、同時にこちらの待ち時間も倍になります。10が通常の落としどころで、数行ならすぐ終わりますが、数十行では数秒かかることがあります。12はおよそ4倍の時間がかかります。
APR1やSHA-1を使うべき場面はありますか。
既存のファイルに合わせるときだけです。APR1はApache独自のソルト付きMD5で、多くの環境で htpasswd がオプションなしに書き出す形式です。ここでのSHA-1はソルトなしで、同じパスワードなら常に同じ行になるため、新規には使うべきではありません。
bcryptは長いパスワードの一部を無視するというのは本当ですか。
本当です。bcryptが読むのは最大72バイトで、それを超えた分はハッシュに届きません。黙って切り捨てず、件数を数えて表示します。
日本語のパスワードは使えますか?
使えます。パスワードはUTF-8でハッシュ化します。ただしbcryptが読むのは72バイトまでで、ひらがなや漢字は1文字3バイトなので、24文字を超えた分はハッシュに反映されません。超えた行があると、その行数を結果の下に表示します。
同じパスワードなのに、生成するたびに違う行になるのはなぜですか。
bcryptとAPR1は、毎回ランダムなソルトをまぜてハッシュにするからです。どの行でも同じパスワードでログインでき、同じパスワードの人がいてもファイルからはわかりません。ソルトのないSHA-1だけは、同じパスワードならいつも同じ行になります。
無料ですか。
はい、すべて無料です。

関連ツール