開発者ツール
.htpasswd ファイル生成
Apache・Nginx の Basic 認証で使用する .htpasswd ファイルをブラウザ上で安全に生成。bcrypt・APR1-MD5・SHA-1 に対応。パスワードはサーバへ送信されません。
Tips
- bcrypt を推奨: 現在最も安全なアルゴリズム。Apache 2.4 以降と Nginx で使用できます。コスト値を上げるほどハッシュ計算が遅くなり、ブルートフォース攻撃に強くなります(10 が一般的な推奨値)。
- APR1-MD5(
$apr1$)は Apache 2.2 以前との互換性が必要な場合に使います。ほぼすべての Apache・Nginx バージョンで動作します。 - SHA-1(
{SHA})は衝突耐性が低く、現在は非推奨です。後方互換性が必要な古い環境でのみ使用してください。 - .htpasswd ファイルはウェブサーバーから直接アクセスできない場所(
DocumentRootの外)に配置することを強く推奨します。 - HTTPS と併用してください。Basic 認証の認証情報は Base64 エンコードされているだけで暗号化されていないため、HTTP では平文で送信されます。
よくある質問
.htaccess または httpd.conf に以下を追加し、AuthUserFile に生成した .htpasswd のパスを指定します。AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user
nginx.conf または該当する server ブロックに追加します。location /admin {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}Nginx は bcrypt と APR1-MD5 の両方に対応しています。基本的に bcrypt を推奨します。Apache 2.4 以降・Nginx であれば問題なく動作します。APR1-MD5 は古い Apache や互換性が求められる場面向けです。SHA-1 は現在は脆弱とされているため、特に理由がなければ選ばないでください。
生成した行(
username:hash 形式)をファイルの末尾に追記するだけです。各行が 1 ユーザーに対応し、空行やコメント行(# で始まる行)は無視されます。はい。すべてのハッシュ計算はブラウザ上で実行され、入力されたパスワードはサーバへ送信されません。ただし安全な HTTPS ページ上で使用し、生成したファイルの取り扱いにも注意してください。
余談ですが ― Basic 認証は古いのに今も使われる理由
HTTP Basic 認証は 1999 年の RFC 2617(現在は RFC 7617 に更新)で定義された非常にシンプルな認証方式です。仕組みは単純で、ユーザー名とパスワードを : で区切り、Base64 でエンコードして Authorization ヘッダーに載せるだけです。
シンプルさゆえに今も広く使われています。特にステージング環境や社内ツールへの「一次防衛線」として、IP 制限と組み合わせた二重防御、あるいはさっと API エンドポイントを保護したい場合に重宝します。設定ファイル 2〜3 行で動き、追加のミドルウェアやデータベースが不要なのが最大の利点です。
ただし注意点もあります。ログアウト機能がなく(ブラウザを閉じるまでセッションが続く)、パスワードの有効期限管理や多要素認証も標準では持ちません。本格的な認証が必要なサービスには OAuth 2.0 や OIDC などを検討してください。