Basic認証・.htpasswd生成ツール
Basic認証の .htpasswd に書く「ユーザー名:ハッシュ」の行を、bcrypt・MD5($apr1$)・SHA-512($6$)・SHA-256($5$)・SHA-1 で作ります。パスワードはブラウザの中だけで計算します。.htaccess と nginx の設定、curl での確認コマンド、既存の .htpasswd とパスワードの照合、Authorization ヘッダーの読み取りもできます。
ユーザーとパスワード
ログインに使うユーザー名とパスワードを入れて「生成する」を押すと、.htpasswd に書く行ができます。パスワードはこのページの中だけで計算し、どこにも送りません。
一度に 20 人まで作れます。
Apache 2.4 で使えます。nginx はパスワードの確認を OS の crypt() に任せるため、bcrypt が通るかは OS しだいです。通らないときは $6$ か $apr1$ を選んでください。
1上げるごとに計算の時間がおよそ2倍になります。htpasswd の既定は 5 で、多くの解説は 10〜12 を勧めています。Basic認証はページを開くたびに照合するので、上げすぎるとサーバーが重くなります。
サーバーの設定
Basic認証をかけるための設定です。.htpasswd の置き場所に合わせて書き換えてください。
認証をかける範囲の名前です。同じサイトの同じ名前の範囲では、ブラウザが入力済みのユーザー名とパスワードを使い回すことがあります。ブラウザによってはダイアログに表示されません。
公開フォルダ(public_html など)の外に置くのが安全です。レンタルサーバーでは管理画面やマニュアルに書かれたフルパスを使います。
例: wp-login.php。<Files> で囲み、そのファイル名だけを守ります。
1行か空白区切りで1つずつ。203.0.113.5 や 198.51.100.0/24、IPv6 も書けます。ここにない IP からはパスワードを聞きます。
.htaccess に書く設定
AuthType Basic AuthName "Restricted Area" AuthUserFile /home/example/.htpasswd Require valid-user
AllowOverride が None だと .htaccess は読まれず、AuthConfig(または All)を含まないとサーバーエラー(500)になります。プロキシや CDN の後ろでは、Require ip が見るのはプロキシの IP です。
パスワードを照合する
いまの .htpasswd を貼り付けると、ユーザーと形式を一覧にします。パスワードを入れると、そのパスワードで通るかを確かめます。
Authorization ヘッダーを読む
「Authorization: Basic …」の値を貼ると、中のユーザー名とパスワードを取り出します。Base64 は暗号ではないので、HTTPS でない通信では誰でも読めます。
使い方
- 「ユーザーとパスワード」に、ログインに使うユーザー名とパスワードを入れます。「ランダム」を押すと、見間違えやすい文字(
IOl01)を除いた英数字20文字のパスワードが入り、表示に切り替わります。「ユーザーを追加」で20人まで並べられます - 「ハッシュの形式」を選びます。最初は bcrypt(
$2y$)で、コストは10です - 「生成する」を押すと、
.htpasswd に書く行にユーザー名:ハッシュの行が並びます。「コピー」か「htpasswd.txt を保存」で取り出し、サーバーでは.htpasswdという名前のファイルにします - 「サーバーの設定」で Apache(
.htaccess)か nginx を選び、.htpasswdの場所を入れると、Basic認証をかける設定ができます - サーバーに置いた後は、結果の下の「動作確認」にある curl のコマンドで確かめられます
パスワードの計算はこのページの中だけで行い、入力も結果もどこにも送信・保存しません。ページを閉じると消えます。
ソルト(ハッシュに混ぜるランダムな文字列)は毎回作り直すので、同じパスワードでも「生成する」を押すたびに違う行になります。どの行も同じパスワードで通ります。
具体例
ユーザー名 alice、パスワード secret で作ると、たとえば次の行になります(ソルトの部分は毎回変わります)。
alice:$2y$10$7bz9yktCxPZex0cfR5gape2BAtykIt3Qkn9nqLzWPaQm7TOhhTja.
$2y$が bcrypt、10がコスト、続く22文字がソルト、残りの31文字がハッシュです- 複数のユーザーは1行に1人ずつ並べます。すでにある
.htpasswdに足すときは、行を末尾に加えます
Apache で、.htpasswd を /home/example/.htpasswd に置いて wp-login.php だけを守り、事務所の IP 203.0.113.5 からはパスワードなしで通す .htaccess は次のようになります。
<Files "wp-login.php">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/example/.htpasswd
<RequireAny>
Require ip 203.0.113.5
Require valid-user
</RequireAny>
</Files>
nginx で /admin/ を守る場合は次のとおりです。
location /admin/ {
auth_basic "Restricted Area";
auth_basic_user_file "/etc/nginx/.htpasswd";
}
形式の選び方
- bcrypt(
$2y$): 新しく作るならこれです。Apache 2.4 で使えます。nginx はパスワードの確認を OS のcrypt()に任せるので、bcrypt が通るかどうかは OS によります。nginx で通らなかったら SHA-512 か MD5 で作り直してください - MD5(
$apr1$): Apache 独自の形式で、htpasswdコマンドの既定です。Apache はどの OS でも、nginx も読めます。ただし MD5 を1,000回くり返すだけなので、bcrypt よりずっと短い時間で総当たりされます - SHA-512(
$6$)・SHA-256($5$): Linux などのcrypt()が読む形式で、Apache と nginx で使えます。Windows 版の Apache では使えません。htpasswdでは Apache 2.4.59 から-5・-2で作れます。ラウンド数の既定は5,000で、そのときは行にrounds=を書きません - SHA-1(
{SHA}): ソルトなしの SHA-1 を1回かけるだけです。同じパスワードはいつも同じ値になり、事前に計算した表で破られます。古いサーバーからの移行の確認以外には使わないでください
bcrypt のコストは、1上げるごとに計算の時間がおよそ2倍になります。htpasswd -B の既定は5で、htpasswd の説明では -C に4〜17を指定します。このページでも17まで選べます。Basic認証はページや画像を読み込むたびにパスワードを照合するので、コストを上げすぎるとサーバーが重くなります。
Basic認証の注意
- Basic認証のパスワードは、Base64 にしてリクエストのたびに送られるだけで、暗号化されません。HTTPS のサイトで使ってください
.htpasswdは公開フォルダ(public_htmlなど)の外に置きます。Apache の標準の設定は.htで始まるファイルを URL から読ませませんが、サーバーの設定しだいです.htaccessのAuthUserFileは/で始まる絶対パスにします。レンタルサーバーでは、管理画面やマニュアルに書かれたフルパスを使います。管理画面に Basic認証の機能があれば、そちらでも設定できます- ユーザー名に
:は使えず、#で始まる行はコメントとして読み飛ばされます - bcrypt はパスワードの先頭72バイト(UTF-8)しか使いません。それより長いと、後ろが違っていても通ります
- 日本語などの英数字以外の文字は、ブラウザによって送る文字コードが違い、ログインできないことがあります。ユーザー名とパスワードは英数字と記号にするのが無難です
- プロキシや CDN の後ろにあるサーバーでは、IP で通す設定が見るのはプロキシの IP になります
照合とヘッダーの読み取り
「パスワードを照合する」に今の .htpasswd を貼り付けると、ユーザーごとの形式と注意(弱い形式、同じユーザーの2行目など)を一覧にします。パスワードを入れて「照合する」を押すと、そのパスワードで通るかを確かめます。bcrypt($2y$ $2b$ $2a$)、MD5($apr1$ $1$)、SHA-256・SHA-512($5$ $6$)、SHA-1({SHA} {SSHA})、平文({PLAIN})を照合できます。13文字の DES crypt と yescrypt($y$)は形式の表示だけです。サーバーと同じく、ユーザー名が一致した最初の行だけを照合します。
「Authorization ヘッダーを読む」には、ブラウザの開発者ツールなどで見た Authorization: Basic … を貼ります。中の Base64 を戻して、ユーザー名とパスワードを表示します。
FAQ
パスワードはサーバーに送られますか?
送られません。ハッシュの計算も照合も、このページの JavaScript がブラウザの中で行います。入力した内容は保存せず、ページを閉じると消えます。
htpasswd コマンドで作った行と違うのはなぜですか?
ソルトがランダムだからです。同じパスワードでも、作るたびにハッシュは変わります。どちらの行も同じパスワードで通ります。「パスワードを照合する」に貼り付けると、通るかどうかを確かめられます。
nginx で bcrypt の行を使うとログインできないのはなぜですか?
nginx は $apr1$ と {SHA} などの一部を自分で読み、それ以外は OS の crypt() に任せます。OS の crypt() が bcrypt に対応していないと読めません。その場合は SHA-512($6$)か MD5($apr1$)で作り直してください。
パスワードを変えるにはどうすればいいですか?
そのユーザーの行を、新しく作った行に置き換えます。同じユーザー名の行が2つあると、サーバーは前の行だけを使います。
ログアウトはできますか?
Basic認証には決まったログアウトの方法がありません。ブラウザを閉じるか、ブラウザに保存された資格情報を消すまで、入力したユーザー名とパスワードが使われます。
- 種別
- ユーティリティ
- カテゴリ
- 開発者向け
- タグ
- htpasswd
- basic-auth
- bcrypt
- htaccess
- apache
- nginx
- password
- hash
関連アプリ

パスワード強度チェッカー
入力したパスワードの強さを、よく使われるパスワード・単語・キーボードの並び・日付などの見つけやすさから判定。破られるまでの時間の目安、弱い部分、NISTと総務省の目安との照らし合わせも。日本の名字・名前のローマ字、和暦、JIS配列にも対応し、送信はしません。

カラーコード変換ツール
HEX・RGB・HSL のカラーコードを相互に変換し、HSV・CMYK・OKLCH の表記も表示。カラーピッカーやプレビューで確認でき、白・黒や指定した文字色とのコントラスト比(WCAG)も分かります。

TOTP生成ツール(ワンタイムパスワード)
Base32の秘密鍵から、2段階認証で使う6桁のワンタイムパスワード(TOTP)をブラウザ内で計算。前後のコードとの照合、SHA-256・8桁などの設定、otpauth:// URIの読み込みと作成、認証アプリで読み取るQRコードの表示に対応。


