.htpasswd生成(Basic認証用・bcrypt/SHA-1)
ApacheのBasic認証に使う .htpasswd の行を、ユーザー名とパスワードから生成します。複数ユーザーをまとめて作成でき、確認用の Authorization ヘッダーも出力します。ブラウザ内で処理され、パスワードがサーバーに送信されることはありません。認証の設定自体は .htaccess生成 や、単体のハッシュ生成・照合は bcryptハッシュ生成・照合 をご利用ください。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
1行に1ユーザー、「ユーザー名:パスワード」の形式です。パスワードに「:」を含めても構いませんが、ユーザー名には使えません。
値が1増えると計算時間が約2倍になります。ユーザー数が多いと時間がかかります。
curl -H や API クライアントで、認証が通るかを確認するときに使えます。
使い方
- 「ユーザーとパスワード」に、「ユーザー名:パスワード」の形式で1行ずつ入力します。
- 「ハッシュ方式」を選びます(通常はbcrypt)。bcryptでは「コスト」も選べます。
- 「生成する」を押し、出力された .htpasswd の内容を「コピー」または「ダウンロード」します。
- サーバー上のWeb公開ディレクトリの外に .htpasswd として置き、.htaccess の AuthUserFile にそのパスを指定します。
注意事項
- bcryptは$2y$形式で出力します。Apacheの標準的なbcrypt形式です($2b$と計算結果は同じです)。Apache 2.4以降で利用できます。
- SHA-1はソルトがなく高速に計算できるため、総当たりに弱い方式です。bcryptに対応していない古い環境でだけ使ってください。
- bcryptは先頭72バイトまでのパスワードに対応します。72バイトを超える行はエラーになります。
- Basic認証はパスワードをBase64にするだけで、暗号化ではありません。必ずHTTPSと併用してください。
- ここで入力するのは、本番で使っているパスワードではなくテスト用の値をおすすめします。入力内容は保存・送信されませんが、画面共有などにご注意ください。
用語解説
.htpasswd
Basic認証のユーザー名とパスワードのハッシュを「ユーザー名:ハッシュ」の形で1行ずつ保存するファイルです。Web公開ディレクトリの外に置くのが基本です。
Basic認証
HTTPの標準的な認証方式です。ブラウザが「ユーザー名:パスワード」をBase64にして Authorization ヘッダーで送ります。
{SHA}形式
パスワードのSHA-1をBase64にして、先頭に{SHA}を付けたhtpasswdの形式です。ソルトがなく、現在は推奨されません。
よくある質問
bcryptとSHA-1はどちらを選べばよいですか?
基本的にはbcryptを選んでください。bcryptはソルトを含み、意図的に計算が遅いため総当たりに強い方式です。SHA-1({SHA}形式)はソルトがなく高速に計算できるため、bcryptに対応していない古い環境でだけ使います。
生成した .htpasswd はどこに置けばよいですか?
Webから直接ダウンロードできない、公開ディレクトリの外に置くのが安全です。そのうえで .htaccess に AuthType Basic、AuthName、AuthUserFile(.htpasswd の絶対パス)、Require valid-user を書きます。設定の雛形は .htaccess生成ツールでも作れます。
ユーザー名やパスワードにコロン(:)は使えますか?
ユーザー名には使えません。Basic認証が「ユーザー名:パスワード」の最初のコロンで区切るためです。パスワードには含められます。このツールも最初のコロンでユーザー名とパスワードを分けます。
同じパスワードでも毎回違うハッシュになるのはなぜですか?
bcryptは生成のたびにランダムなソルトを加えるためで、正常な動作です。どのハッシュでもApacheは同じパスワードで認証できます。SHA-1はソルトがないので、同じパスワードなら同じ結果になります。
このページをシェア
