セキュリティ

htpasswd ジェネレーター

Apache や nginx の HTTP Basic 認証で使う .htpasswd の資格情報行を生成します。新規には bcrypt を使い、古いサーバーが必要とする場合は Apache MD5、SHA-512、従来の crypt に切り替えられます。既存ハッシュとパスワードの照合もでき、処理はすべてブラウザー内で完結します。

  • 8 種類のアルゴリズム:bcrypt(推奨)から Apache MD5、SHA-512/256-crypt、従来の SHA-1・crypt・平文まで
  • すべてブラウザー内で動作し、パスワードは端末から出ません
  • bcrypt のコスト調整、内蔵の強力なパスワード生成、.htpasswd ファイル全体を作る一括モード
  • 検証モードは任意の既存ハッシュにパスワードを突き合わせ、どのアルゴリズムで作られたかを教えます
工具/htpasswd ジェネレーター

コストが高いほどハッシュは遅く、解読しにくくなります。10〜12 が妥当な既定値です。

ブラウザー内でローカルにハッシュ化。パスワードは送信されません。

ハッシュエンジンを読み込み中
8%
bcrypt と crypt のエンジンは初回のみダウンロードし、訪問中はキャッシュされます。
出力

概要

.htpasswd ファイルの信頼性は、ハッシュアルゴリズム、ソルト、保存場所に左右されます。このツールは新規向けの既定、古いサーバー向けの互換形式、既存資格情報の確認手段をそろえ、パスワードをページ外へ出しません。

  1. 01

    既定は bcrypt

    HTTP Basic 認証の推奨アルゴリズム。コスト係数を調整して、速度と総当たり耐性を天秤にかけられます。出力は Apache と nginx が期待する $2y$ 接頭辞を使います。

  2. 02

    主要な互換形式に対応

    従来の .htpasswd 向け Apache MD5(apr1)、現代 Unix 向け SHA-512 と SHA-256 crypt、さらに MD5 crypt・SHA-1・DES crypt・平文まで、古い環境の制約に対応できます。

  3. 03

    安全性を見分けやすく表示

    各アルゴリズムに推奨・強力・旧式・非推奨のタグを付け、新規に使うべき形式と互換目的だけの弱い形式を分けて判断できます。

  4. 04

    既存ハッシュの検証

    検証モードに切り替え、ハッシュまたは完全な ユーザー名:ハッシュ 行を貼り付けてパスワードを入力すると、一致するか、どのアルゴリズムが使われたかを教えます——サーバーへのアクセスは不要です。

  5. 05

    ファイルの一括生成

    多数の ユーザー名:パスワード を貼り付けると、完全な .htpasswd ファイルを一度に得られます。ユーザーごとに CLI を実行する必要はありません。

  6. 06

    対応するコマンドのヒント

    各結果に同等の htpasswd または openssl コマンドを表示するので、サーバー上で再現したり、使いながらフラグを覚えたりできます。

使い方

数ステップで 1 行の資格情報、またはファイル全体を生成できます——パスワードはブラウザーから出ません。

  1. 01

    ユーザー名を入力し、パスワードを入力するか、サイコロを押して強力なものを生成します。

  2. 02

    アルゴリズムを選びます。古いサーバーが特定の形式を必要としない限り bcrypt のままにし、より遅く強いハッシュが欲しければ bcrypt のコストを設定します。

  3. 03

    生成された ユーザー名:ハッシュ 行をコピーするか、.htpasswd ファイルとして直接ダウンロードします。ユーザーが多い場合は一括モードをオンにし、1 行に 1 つ ユーザー名:パスワード を貼り付けます。

  4. 04

    サーバーをそのファイルに向けて——Apache は AuthUserFile、nginx は auth_basic_user_file——再読み込みします。既存ハッシュとの照合は、いつでも検証モードで行えます。

詳細

出力を安心して配信でき、信頼しやすくする細部。

  • bcrypt の出力は $2y$ 識別子を使い、crypt ハッシュは openssl passwd とバイト単位で一致するので、Apache と nginx にそのまま入ります。
  • bcrypt、apr1、crypt 系の形式では暗号学的に安全なランダムソルトを使うため、同じパスワードでも通常は異なる出力になります。
  • 内蔵のパスワード生成器はブラウザーの crypto API を使い、O・0・l・1 のような紛らわしい文字を避けます。
  • 検証モードはハッシュの接頭辞からアルゴリズムを自動判定し、埋め込まれたソルトで再確認します。bcrypt の $2a$・$2b$・$2x$・$2y$ の各種にも対応します。
  • アップロードもログ記録もしません。パスワードとハッシュはメモリ内で処理され、タブを閉じると消えます。

活用シーン

高速で非公開な htpasswd ツールが活きる場面。

  1. ステージングサイトの保護

    ステージングや社内環境の前に数分で Basic 認証を置き、保護された .htpasswd ファイルに入れられる bcrypt 資格情報を作れます。

  2. nginx の location をロックする

    auth_basic_user_file 用のハッシュを生成し、管理パス・メトリクスのエンドポイント・非公開ダウンロードを、本格的なログインシステムなしで守れます。

  3. 資格情報を安全にローテーション

    新しい強力なパスワードと高めの bcrypt コストでユーザー行を再生成します。差し替える前に、検証モードで旧パスワードを旧ハッシュに突き合わせて確認します。

  4. 多数のユーザーを一括で用意

    表計算やスクリプトから ユーザー名:パスワード の一覧を貼り付け、完全な .htpasswd ファイルを得ます。htpasswd をループで叩く必要はありません。

  5. 引き継いだファイルの監査

    検証モードで、既存の .htpasswd 行がどのアルゴリズムを使っているか、既知のパスワードがまだ一致するかを確認し、何を更新すべきか判断します。

  6. 古い Basic 認証の移行

    古いファイルにある apr1、SHA-1、DES の行を見分け、bcrypt や SHA-crypt へ段階的に置き換えられます。

関連情報

まず生のパスワードが必要ですか?パスワードジェネレーター で 1 つ生成できます。任意のテキストの一回限りのダイジェストには、ハッシュ生成ツール が MD5・SHA などに対応します。

.htpasswd と Basic 認証の関係

HTTP Basic 認証は、サイトやパスにユーザー名とパスワードをかける最も簡単な方法です。サーバーは資格情報をフラットファイルに 1 ユーザー 1 行で保存し、パスワードはハッシュとしてのみ保持します。

  1. ファイル形式

    各行は ユーザー名:ハッシュ です。Apache は AuthUserFile、nginx は auth_basic_user_file から読み込みます。ハッシュの接頭辞($2y$、$apr1$、$6$、{SHA})が、どのアルゴリズムで検証するかをサーバーに伝えます。

  2. なぜ現代は bcrypt か

    bcrypt は意図的に遅く、ソルト付きなので、オフラインでのパスワード推測は高コストです。調整可能なコスト係数により、ハードウェアが速くなってもそのコストを上げられます。MD5 や SHA-1 のような固定コストのハッシュにはできません。

  3. Apache MD5(apr1)は素の MD5 ではない

    $apr1$ 方式は MD5 を千回のソルト付き反復に通します。単純な MD5 ダイジェストよりはるかに強く、古い Apache では最も移植性の高い選択肢です。とはいえ、使える場所では bcrypt が優先されます。

  4. SHA-512 と SHA-256 crypt

    $6$ と $5$ は、現代 Linux のログインで使われるソルト付き反復 crypt 形式です。nginx や新しめの Apache も問題なく検証でき、追加依存のない強力な選択肢になります。

  5. 弱いもの、そしてなぜ残っているか

    SHA-1({SHA})、従来の DES crypt、平文は、非常に古いソフトとの互換のためだけに残っています。DES は 8 文字目以降を黙って無視し、平文はファイルを持つ誰もが読めます。ほかに受け入れられない場合のみ使ってください。

  6. ソルトと検証

    現代の各方式は出力にランダムなソルトを埋め込むため、同じパスワードでも毎回違うハッシュになります。検証は、その埋め込まれたソルトでアルゴリズムを再実行して比較します——ここの検証モードがまさにそれです。

使い方のヒント

Basic 認証の資格情報を強く、ファイルをきれいに保つ習慣。

  • 新しい資格情報は既定で bcrypt を使い、特定のサーバーが検証できない場合のみ apr1 や crypt に戻します。
  • 避けられないレガシーシステムが要求しない限り、SHA-1・DES・平文は出さないでください——保護はほとんど、あるいは全くありません。
  • ハードウェアの向上に合わせて bcrypt のコストを上げます。今日では 10〜12 が妥当で、機微なエンドポイントはより高めに。
  • .htpasswd は Web サーバーが公開できないパスに置き、ファイル権限を厳しくしてハッシュをダウンロードされないようにします。
  • Basic 認証は必ず HTTPS と併用します。ブラウザーは毎リクエストでユーザー名とパスワードを暗号化ではなく base64 で送るためです。

制限事項

このツールが行うことと、サーバーに委ねること。

  • .htpasswd ファイルのハッシュを生成・検証します。サーバー設定の編集、ファイルのアップロード、誰が読めるかの管理は行いません。
  • DES crypt はパスワードの最初の 8 文字しか使わず、平文はそもそもハッシュではありません——どちらも安全のためではなく互換のために用意しています。
  • 検証モードは標準のハッシュ接頭辞を認識します。認識できない、または不正なハッシュは推測せず報告します。
  • bcrypt は 72 バイトを超えるパスワードを切り詰めます。これはアルゴリズム自体の性質で、すべての bcrypt 実装に当てはまります。

よくある質問

.htpasswd ファイル、各アルゴリズム、本ツールについてのよくある質問。

パスワードはサーバーに送信されますか?

いいえ。すべてのハッシュはブラウザー内で JavaScript により計算され、パスワードはメモリ内にのみ保持されます。アップロードもログ記録も保存もしません。これは、必ずパスワードを受け取るサーバー側 htpasswd ジェネレーターとの決定的な違いです。

どのアルゴリズムを選ぶべき?

古いサーバーが検証できない場合を除き、bcrypt です。bcrypt はソルト付きで意図的に遅く、コストを調整できます。bcrypt が使えない場合は Apache MD5(apr1)か SHA-512 crypt が強力な選択肢です。避けられない互換目的以外では SHA-1・DES・平文は避けてください。

これらのハッシュは Apache と nginx に対応しますか?

はい。bcrypt の出力は Apache が期待する $2y$ 接頭辞を使い、apr1・SHA-256・SHA-512 crypt 形式は openssl passwd やシステムの crypt と一致するため、Apache(AuthUserFile)も nginx(auth_basic_user_file)も検証できます。

bcrypt のコスト係数は何をしますか?

bcrypt の実行ラウンド数を決め、1 段上げるごとに作業量が倍になります。コストが高いほど 1 つのハッシュ計算が遅くなり、オフラインの推測攻撃を遅らせます。多くのサイトではコスト 10〜12 が安全とログイン速度のバランスになります。

検証モードはどう動きますか?

ハッシュまたは完全な ユーザー名:ハッシュ 行と、試したいパスワードを貼り付けます。ツールは接頭辞からアルゴリズムを判別し、ハッシュに埋め込まれたソルトで再実行して比較し、一致するか、どの方式が使われたかを伝えます。

.htpasswd ファイル全体を一度に生成できますか?

はい。一括モードをオンにして、1 行に 1 つ ユーザー名:パスワード を貼り付けます。各行は選んだアルゴリズムでハッシュ化され、結果をコピーするか .htpasswd ファイルとして直接ダウンロードできます。

Basic 認証でも HTTPS は必要ですか?

絶対に必要です。Basic 認証は毎リクエストでユーザー名とパスワードを base64 で送り、それは簡単に復号できます。これらの資格情報を通信中に非公開に保てるのは HTTPS だけなので、平文 HTTP で Basic 認証を使ってはいけません。

関連ツール

セキュリティとアイデンティティのツールキットの残りも続けてどうぞ。