htpasswd ジェネレーター — bcrypt・Apache MD5(apr1)・Basic認証
bcrypt・Apache MD5(apr1)・SHA-1 などで htpasswd エントリーを生成。Apache・nginx・Docker 設定をすぐに貼り付けられる形式で出力。100% ブラウザ完結・アップロード不要。
既存ハッシュの検証
htpasswd ファイルとは?
.htpasswd ファイルは HTTP Basic 認証で使用する認証情報を保存するファイルです。各行は username:hash の形式で、ハッシュはパスワードの一方向ダイジェストです——平文は保存されません。Web サーバーはこのファイルを読み取り、保護された URL へのアクセスを制御します。Apache では .htaccess ファイル(または <Directory> ブロック)が .htpasswd ファイルを参照し、ページを返す前にブラウザにユーザー名とパスワードを求めます。
ハッシュ形式は使用したアルゴリズムによって異なります。Apache の htpasswd ツールはいくつかの形式を出力できます。bcrypt($2y$ で始まる行)は最も強力で、Apache・Docker Registry・Caddy に推奨されます。apr1(Apache MD5、$apr1$ で始まる)は最も移植性が高く nginx の安全なデフォルトです。SHA-1({SHA} で始まる)はソルトなしで安全でないとみなされます。crypt(従来の DES)はレガシーで 8 文字で切り捨てられます。plain はパスワードを平文で保存するため本番環境では絶対に使用しないでください。
このジェネレーターはすべてブラウザ内で動作します——ユーザー名・パスワード・ハッシュが送信されることは一切ありません。エントリーに使う強力なパスワードが必要な場合は ランダムパスワードジェネレーター をご利用ください。Authorization: Basic ヘッダーを手動で作成する場合、認証情報は base64(user:password) で、Base64 エンコーダー で生成できます。エンドポイントを保護したら、cURL コマンドビルダー でコマンドラインからテストできます。
# Apache htpasswd CLI equivalents (apache2-utils / httpd-tools) # bcrypt entry, printed to stdout (recommended; -B = bcrypt, -n = no file, -b = password on CLI) htpasswd -Bbn admin 's3cret' # → admin:$2y$10$N9qo8uLOickgx2ZMRZoMye... # apr1 (Apache MD5) entry, portable for nginx — no apache2-utils needed printf "admin:$(openssl passwd -apr1 's3cret')\n" # → admin:$apr1$k3l4Hj9.$qN8... # Append a user to an existing file from the shell htpasswd -B /etc/apache2/.htpasswd alice # Note: nginx delegates bcrypt to the system crypt(); on Alpine/musl or old # glibc that fails — prefer apr1 for nginx to stay portable.
主な機能
複数のハッシュアルゴリズム
bcrypt($2y$)・apr1 / Apache MD5($apr1$)・SHA-1({SHA})のエントリーを生成でき、テスト用の plain(平文)オプションも利用可能です。形式がサポートする場合は必ずランダムな暗号ソルトが使用されます。
生成と検証
新しいエントリーの生成だけでなく、既存エントリーの検証も行えます。保存済みの user:hash の行と確認したいパスワードを貼り付けると、一致するかどうかを即座に確認できます——本番環境での 401 エラーのデバッグに役立ちます。
サーバーで選択
Apache・nginx・Docker・Caddy を選択すると正しいアルゴリズムが自動選択されます——サポートされている場合は bcrypt、nginx の移植性のためには apr1——crypt() のサイレントな失敗を避けられます。
すぐに貼り付けられる設定ブロック
Apache .htaccess・nginx auth_basic・Docker・Kubernetes ingress-nginx・Caddy・Traefik の 6 つのコピー可能な設定スニペットが用意されており、生成した .htpasswd エントリーにすでに紐付けられています。
100% クライアントサイド
すべてのハッシュ処理は Web Crypto とバンドルされた bcrypt 実装によりブラウザ内でローカルに行われます。ユーザー名・パスワード・ハッシュはサーバーに送信されることはなく、本番の認証情報を安全に生成できます。
サンプル
bcrypt エントリー(推奨)
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
$2y$ プレフィックスとコスト 10 を持つ bcrypt エントリーです。最も強力で移植性の高い形式で、Apache・Docker Registry・Caddy・Traefik に使用します。
apr1 エントリー(移植性重視の nginx)
admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1
$apr1$ マーカーの後に 8 文字のソルトを持つ Apache MD5(apr1)エントリーです。bcrypt の検証が信頼性の低いシステムの crypt() に依存する nginx の安全なデフォルトです。
SHA-1 エントリー(レガシー)
admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= {SHA} エントリーはソルトなし SHA-1 ダイジェストの base64 です。Apache と nginx は受け付けますが、ソルトなしで安全でないためレガシー互換のみを目的として含まれています。
Authorization: Basic ヘッダー
Authorization: Basic YWRtaW46czNjcmV0
同じユーザーのクライアントサイド認証情報です。base64('admin:s3cret') に相当します。.htpasswd ファイルなしで認証するために curl -H や Postman でこのヘッダーを送信します。
複数ユーザーの .htpasswd ファイル
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy alice:$2y$10$3bQ8xY7tLp2mZ0xW5cR4fO9vK1jH6sD2nG8aQ5wE3rT7uI4oP1cm bob:$apr1$mZ0xW5cR$4fK1jH6sD2nG8aQ5wE3rT2
1 行につき 1 ユーザーの username:hash を記述します。同じファイル内でアルゴリズムを混在させることができます——ここでは 3 ユーザーに対して 2 つの bcrypt エントリーと 1 つの apr1 エントリーが共存しています。
使い方
- 1
サーバーとアルゴリズムを設定
対象サーバー(Apache・nginx・Docker・Caddy)を選択すると、適切なアルゴリズムが自動選択されます——Apache・Docker・Caddy には bcrypt、移植性重視の nginx には apr1。手動でアルゴリズムを変更したり、bcrypt のコストを調整することもできます。
- 2
ハッシュを生成
ユーザー名とパスワードを入力(または「ランダムパスワード」をクリック)し、「生成」ボタンを押します。ハッシュはランダムなソルトを使いローカルで計算されます。「ソルト再生成」でいつでも新しいエントリーを作れます。
- 3
エントリーをコピー
.htpasswd ファイル用の user:hash の行、シェル用の echo >> 追記コマンド、curl や Postman 用の Authorization: Basic ヘッダーをコピーします。
- 4
設定をデプロイ
生成された設定ブロックを Apache の .htaccess、nginx のサーバーブロック、Docker・Kubernetes ingress・Caddy・Traefik の設定ファイルに貼り付け、.htpasswd ファイルのパスを指定してサーバーをリロードしてください。
主な使用例
- Apache のディレクトリ保護
- .htaccess ファイルと AuthUserFile ディレクティブを使って HTTP Basic 認証でフォルダーをロックします。bcrypt エントリーと生成された Apache 設定ブロックを配置するだけで、任意のパスにログインを要求できます。
- nginx auth_basic
- auth_basic と auth_basic_user_file で location または server ブロックを保護します。Alpine・Debian・その他のベースイメージ全体で確実に検証が機能するよう apr1 形式を使用します。
- Docker Registry
- プライベート Docker Registry は bcrypt の htpasswd エントリーのみを受け付けます。htpasswd -Bbn で $2y$ の行を生成し、レジストリコンテナにマウントして docker login で認証します。
- Kubernetes ingress-nginx
- .htpasswd ファイルから basic-auth Secret を作成し、nginx.ingress.kubernetes.io/auth-type と auth-secret アノテーションで参照することで ingress ルートを保護できます。
- Caddy と Traefik
- Caddy の basic_auth ディレクティブと Traefik の basicauth ミドルウェアはどちらも bcrypt ハッシュを期待しています。生成したエントリーを Caddyfile や Traefik のラベル・動的設定にそのまま貼り付けてください。
- curl と Postman の Authorization ヘッダー
- クイックテストにはファイルを使わず、Authorization: Basic ヘッダーをコピーして認証情報を直接送信できます。curl の -H フラグや Postman リクエストに追加して、保護されたエンドポイントにアクセスしてください。
技術詳細
- bcrypt($2y$)
- 調整可能なコストファクターを持つ Blowfish 暗号ベースの適応型ソルト付きハッシュです。各エントリーにはランダムな 16 バイトのソルトとコストが埋め込まれているため、同じパスワードでも異なるハッシュが生成されます。注意:bcrypt はパスワードを 72 バイトで切り捨てます——それ以降の文字は無視されます。
- apr1(Apache MD5)
- Apache の繰り返し処理付きソルト MD5 バリアントです($apr1$ + 8 文字のソルト)。1,000 回の MD5 ラウンドを実行します。bcrypt の適応コストと比べるとはるかに弱いですが、Apache と nginx によってネイティブに実装されているため、プラットフォームやベースイメージを問わず最も移植性の高い形式です。
- SHA-1 と crypt
- SHA-1 エントリー({SHA} + base64 ダイジェスト)はソルトなしのため、同じパスワードは同じハッシュになりレインボーテーブル攻撃に脆弱です——レガシー互換のみを目的として含まれています。従来の crypt(DES)はさらに弱く、パスワードを 8 文字で暗黙的に切り捨てます。
- ソルトとイテレーション
- ソルトにより全ハッシュが固有になり、事前計算(レインボーテーブル)攻撃を防ぎます。bcrypt は設定可能なコストで 128 ビットのランダムソルトを使用し、apr1 は 1,000 回の固定イテレーションで 8 文字のソルトを使用します。「ソルト再生成」で同じパスワードの異なる有効なハッシュを再生成できます。
- Base64 と UTF-8 の処理
- パスワードはハッシュ前に UTF-8 バイトとしてエンコードされるため、非 ASCII 文字も一貫して処理されます。Authorization: Basic ヘッダーは生の UTF-8 の username:password バイトの base64 であり、サーバーが受信側でデコードする内容と一致します。
- 注意事項と制限
- 生成されたハッシュはローカルで計算されており、ライブサーバーで検証されているわけではありません。コピーしたエントリーとダウンロードした .htpasswd ファイルは平文ハッシュ形式でクリップボードとディスクに保存されます——機密情報として取り扱い、ファイル権限を制限し、本番設定に貼り付けた後はクリップボードをクリアしてください。
ベストプラクティス
- サポートされている場所では bcrypt を優先
- Apache・Docker・Caddy・Traefik には bcrypt($2y$)を使用してください——ソルト付き・適応型で apr1 や SHA-1 よりはるかに強力です。システムの crypt() への依存により bcrypt が信頼性のない nginx にのみ apr1 を使用してください。
- Web ルートの外にファイルを保存
- .htpasswd は公開ディレクトリの外に置き、HTTP 経由でダウンロードされないようにしてください。chmod 640 を設定し、Web サーバーユーザーが所有者になるようにして、サーバーは読み取れるが他のアカウントは読み取れないようにします。
- 常に HTTPS で提供
- Basic 認証はリクエストごとに可逆 base64 で認証情報を送信します。TLS がなければ、ネットワーク上の誰もがパスワードを読み取ることができます。平文 HTTP で Basic 認証を有効にしないでください——保護されたエンドポイントの前で TLS を終端してください。
- 固有の強力なパスワードを使用
- 各アカウントには、サービス間で再利用しない高エントロピーのパスワードを設定してください。ランダムパスワードジェネレーター でパスワードを生成し、手動で考えるのではなくパスワードマネージャーに保存してください。
よくある質問
bcrypt と apr1 — どちらを選べばよいですか?
nginx は bcrypt をサポートしていますか?
nginx のエラー `crypt_r() failed (22: Invalid argument)` を修正するには?
.htpasswd ファイルの保存場所と権限は?
.htaccess / nginx で Basic 認証を設定するには?
パスワードはどこかにアップロードされますか?
bcrypt の $2a$・$2b$・$2y$ の違いは何ですか?
bcrypt のコストはいくつにすべきですか?
htpasswd と Authorization: Basic ヘッダー——何が違いますか?
apache2-utils がインストールされていません——htpasswd エントリーを生成するには?
htpasswd のフラグ -B・-Bbn・-bnB の意味は?
Docker Registry が bcrypt を必要とするのはなぜですか?
Basic 認証は安全ですか?
関連ツール
すべてのツールを見る →cURLコマンドジェネレーター&ビルダー
Web と API
ブラウザでcurlコマンドを作成 — メソッド・ヘッダー・認証・ボディを設定してすぐにコピーできるコマンドを生成。Bearer・POST JSON・ファイルアップロードのプリセットも搭載。無料・プライバシー保護・登録不要。
進数変換ツール — 2進数・16進数・10進数・8進数
単位変換
無料オンライン進数変換ツール。2進数、8進数、10進数、16進数および任意の基数(2-36)間で数値を瞬時に変換。BigInt対応で桁数制限なし。登録不要・サーバー送信なし、すべての処理がブラウザ内で完結。コピーボタンやコードリテラル出力で開発作業を効率化。
Base64エンコーダー&デコーダー
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
ケース変換ツール — UPPERCASE、lowercase、camelCase ほか
テキスト処理
テキストを UPPERCASE、lowercase、Title Case、Sentence case、camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE など 15 形式へ即座に変換。無料・ブラウザ完結・登録不要。
カラーコンバーター — HEX, RGB, HSL & OKLCH
単位変換
HEX を RGB、HSL、OKLCH、OKLAB、CMYK にブラウザで変換できます。任意の形式をワンクリックでコピー。無料・登録不要・色データはページから一切送信されません。
Crontab ジェネレーター & cron 式ビルダー
日付/時刻ツール
ブラウザ上で cron 式を生成・検証・デコードできます。ローカルタイムまたは UTC での次回実行プレビュー、POSIX 5 フィールド構文、プリセット、自然言語による説明に対応。無料・プライベート・登録不要。