Skip to content

htpasswd ジェネレーター — bcrypt・Apache MD5(apr1)・Basic認証

bcrypt・Apache MD5(apr1)・SHA-1 などで htpasswd エントリーを生成。Apache・nginx・Docker 設定をすぐに貼り付けられる形式で出力。100% ブラウザ完結・アップロード不要。

トラッキングなし ブラウザで動作 無料
100% ブラウザ完結 — パスワードはデバイスの外に出ません。
サーバー
bcrypt コスト: 12
htpasswd エントリー
Authorization ヘッダー
 
既存ハッシュの検証
ハッシュの正確性と Basic 認証標準への準拠についてレビュー済み — Go Tools エンジニアリングチーム · Jun 4, 2026

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. 1

    サーバーとアルゴリズムを設定

    対象サーバー(Apache・nginx・Docker・Caddy)を選択すると、適切なアルゴリズムが自動選択されます——Apache・Docker・Caddy には bcrypt、移植性重視の nginx には apr1。手動でアルゴリズムを変更したり、bcrypt のコストを調整することもできます。

  2. 2

    ハッシュを生成

    ユーザー名とパスワードを入力(または「ランダムパスワード」をクリック)し、「生成」ボタンを押します。ハッシュはランダムなソルトを使いローカルで計算されます。「ソルト再生成」でいつでも新しいエントリーを作れます。

  3. 3

    エントリーをコピー

    .htpasswd ファイル用の user:hash の行、シェル用の echo >> 追記コマンド、curl や Postman 用の Authorization: Basic ヘッダーをコピーします。

  4. 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 — どちらを選べばよいですか?
Apache・Docker Registry・Caddy・Traefik には bcrypt を使用してください——強力で、ソルト付き、適応型のハッシュであり、現代の標準です。nginx には apr1(Apache MD5)を使用してください。nginx は bcrypt の検証をシステムの crypt() に委ねており、多くのビルドで失敗するためです。一方 apr1 は内部的に実装されてどこでも動作します。ランタイムを制御できて bcrypt がサポートされていることが分かっている場合、bcrypt は常により強力な選択です——apr1 はセキュリティではなく移植性のためのものです。
nginx は bcrypt をサポートしていますか?
間接的にのみ、かつ確実ではありません。nginx はパスワードをハッシュしません——$2y$ エントリーの検証は C ライブラリの crypt() 関数に委ねられるため、サポートは libc に完全に依存します。Alpine の musl と古い glibc ビルドには blowfish(bcrypt)スキームが含まれておらず、認証がサイレントに失敗します。移植性のある nginx セットアップには apr1 形式を使用してください——nginx はすべてのプラットフォームで内部的に検証します。
nginx のエラー `crypt_r() failed (22: Invalid argument)` を修正するには?
このエラーは、nginx が blowfish スキームをサポートしていない libc(通常 Alpine/musl または古い glibc)で bcrypt($2y$)ハッシュを検証しようとしたことを意味します。修正方法は、bcrypt の代わりに apr1(Apache MD5)としてエントリーを再生成することです——nginx はどのプラットフォームでも内部的に検証します。あるいは bcrypt をサポートする libc を含むベースイメージに切り替えることもできますが、apr1 の方がシンプルで移植性の高い解決策です。
.htpasswd ファイルの保存場所と権限は?
.htpasswd ファイルは Web ドキュメントルートの外に保存し、静的ファイルとして公開されないようにしてください。一般的な保存場所は /etc/apache2/.htpasswd または /etc/nginx/.htpasswd です。権限を 640(chmod 640)に設定し、Web サーバーが実行するユーザー(例:www-data や nginx)が所有者になるようにしてください。サーバーはファイルを読み取れますが、他のアカウントは読み取れません。
.htaccess / nginx で Basic 認証を設定するには?
Apache の場合、このツールは AuthType Basic・AuthName・.htpasswd パスを指定する AuthUserFile・Require valid-user を含む .htaccess ブロックを生成します。nginx の場合、auth_basic "Restricted"; と auth_basic_user_file /path/.htpasswd; を含む location ブロックを生成します。サーバーに合った設定ブロックをコピーし、ファイルパスを調整してリロードするだけです——スニペットはそのまま貼り付けられます。
パスワードはどこかにアップロードされますか?
いいえ。すべてのハッシュはブラウザ内で JavaScript を使って計算されます——ユーザー名・パスワード・生成されたハッシュがネットワーク経由で送信されることは一切ありません。生成中にブラウザの開発ツール(F12 → ネットワークタブ)を開いて確認できます。送信リクエストはゼロです。いかなるサーバーにも保存・記録されないため、ここで本番の認証情報を安全に生成できます。
bcrypt の $2a$・$2b$・$2y$ の違いは何ですか?
同じ bcrypt アルゴリズムのバージョンプレフィックスで、同等のハッシュを生成します。違いは、一部の実装における高ビット文字と文字列長の処理に関する歴史的なバグ修正に起因しています。Apache の htpasswd は $2y$ を出力します。最新の bcrypt ライブラリは $2a$・$2b$・$2y$ を検証時に互換として扱うため、ここで生成した $2y$ エントリーは Apache・Caddy・Traefik・Docker Registry で正しく検証されます。
bcrypt のコストはいくつにすべきですか?
コスト 12 が現代のデフォルトであり、セキュリティとパフォーマンスのバランスが取れています。コストはワークファクターで、1 増えるたびにハッシュの計算と検証にかかる時間が 2 倍になります。ブルートフォース攻撃は遅くなりますが、ログインのたびにレイテンシも増加します。トラフィックが少ないまたは低リスクのエンドポイントにはコスト 10 も許容範囲です。重要なエンドポイントには 12〜14 が推奨されます。正当な認証が著しく遅くなるほど高い値は避けてください。
htpasswd と Authorization: Basic ヘッダー——何が違いますか?
両者は同じ交換の両端に位置します。.htpasswd ファイルにはサーバー側の保存済みハッシュが含まれます——サーバーが認証情報の検証に使う一方向ダイジェストです。Authorization: Basic ヘッダーはクライアント側のリクエスト認証情報です。ブラウザや curl がリクエストごとに送信する username:password の base64 エンコードです。サーバーはヘッダーを base64 デコードし、パスワードを保存済みハッシュと照合します。一方はストレージ、もう一方はトランスポートです。
apache2-utils がインストールされていません——htpasswd エントリーを生成するには?
このツールを使えば apache2-utils は不要です——bcrypt・apr1・SHA-1 のエントリーをブラウザ内で完全に生成できます。コマンドラインを好む場合、OpenSSL はほぼすべてのシステムにあらかじめインストールされています。openssl passwd -apr1 を実行して apr1 ハッシュを生成し、username: を先頭に追加して行を完成させてください。Debian/Ubuntu では apt install apache2-utils で htpasswd バイナリをインストールできます。RHEL/CentOS では httpd-tools です。
htpasswd のフラグ -B・-Bbn・-bnB の意味は?
各文字は独立したフラグです。-B は bcrypt を選択し、-n は結果をファイルに書き込む代わりに標準出力に出力し、-b はパスワードをプロンプトではなくコマンドライン引数として受け取ります。順序は関係ないため -Bbn と -bnB は同一です。-Bbn は Docker Registry の htpasswd ファイルに bcrypt エントリーをパイプするための一般的な組み合わせです。
Docker Registry が bcrypt を必要とするのはなぜですか?
Docker Registry の htpasswd 認証バックエンドは bcrypt 形式のエントリーのみを受け付けます。apr1・SHA-1・crypt ハッシュは拒否され、ログインに失敗します。htpasswd -Bbn user password でエントリーを生成(またはここで bcrypt オプションを使用)し、ファイルをレジストリコンテナにマウントして REGISTRY_AUTH_HTPASSWD_PATH で指定してください。Basic 認証の認証情報は転送中に読み取れるため、必ず TLS と組み合わせてください。
Basic 認証は安全ですか?
HTTPS 上でのみ安全です。HTTP Basic 認証はリクエストごとに base64(username:password) で認証情報を送信しますが、base64 は可逆エンコードです——暗号化ではありません——ため、トラフィックを読める人は即座にパスワードを取得できます。TLS 上ではヘッダーは転送中に暗号化されており、Basic 認証は簡単なアクセス制限として許容されます。平文 HTTP では絶対に使用せず、重要なアプリケーションにはより強固な認証方式を採用してください。

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 フィールド構文、プリセット、自然言語による説明に対応。無料・プライベート・登録不要。