概要
Digest認証は、ネットワーク上にパスワードを平文で流さず、ハッシュ化した値を用いて認証を行う方式です。htdigestコマンドは、この認証に使用する「ユーザー名」「レルム(保護領域)」「パスワード」の組み合わせを専用のファイルに保存・管理するために使用されます。Basic認証よりも高いセキュリティが求められる環境で有効です。
仕様(引数・オプション)
構文
htdigest [オプション] パスワードファイル名 レルム ユーザー名
オプション
| オプション | 説明 |
| -c | 指定したファイルを新規に作成します。既存のファイルがある場合は上書きされます。 |
基本の使い方
プロジェクト内部のダッシュボードを保護するために、認証ファイルを新規作成し、管理者ユーザーを追加する手順です。レルム(保護領域名)はApacheの設定ファイルの AuthName と一致させる必要があります。
BASH
# apache2-utils(Ubuntu等)や httpd-tools(RHEL系)に含まれます
sudo apt update && sudo apt install -y apache2-utils
# /etc/apache2/.htdigest-internal ファイルを新規作成
# レルムを "Internal Dashboard"、ユーザー名を mori として登録
sudo htdigest -c /etc/apache2/.htdigest-internal "Internal Dashboard" mori
TEXT
Adding password for mori in realm Internal Dashboard.
New password:
Re-type new password:
実践コマンド
既存の認証ファイルに、チームメンバーを追加するシナリオです。2人目以降の追加では、既存のデータを保持するために -c オプションを外して実行します。
BASH
# 既存の .htdigest-internal ファイルに mori ユーザーを追加・更新
# レルム設定は既存のものと統一する必要があります
sudo htdigest /etc/apache2/.htdigest-internal "Internal Dashboard" mori
# ファイルの内容を確認(ユーザー名:レルム:ハッシュの形式)
cat /etc/apache2/.htdigest-internal
TEXT
Adding user mori in realm Internal Dashboard
New password:
Re-type new password:
mori:Internal Dashboard:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
カスタムポイント
- レルム名:
"Internal Dashboard"の部分は、Webサーバー側の設定(AuthName)で指定した文字列と完全に一致させてください。 - 保存パス:
/etc/apache2/.htdigest-internalは、ブラウザから直接アクセスできないディレクトリに配置し、適切なパーミッションを設定してください。 - ユーザー名: システム上の実際のユーザー名である必要はなく、認証用に定義する
moriなどの任意の識別子を使用します。
注意点
- レルムの一致: レルム名がApacheの設定ファイル内の
AuthNameと1文字でも異なると、正しいパスワードを入力しても認証に失敗します。 - ファイルの上書き:
-cオプションを付けて実行すると、既存のユーザーデータがすべて消去されてファイルが初期化されるため、更新時には絶対に使用しないでください。 - 対話形式: htdigestは実行時にパスワードの入力を求める対話形式です。スクリプト等で完全に自動化したい場合は、expectコマンドなどを組み合わせる必要があります。
応用
認証ファイル内に登録されているユーザー数を確認したり、特定のレルムに属するユーザーのみを抽出する方法です。
BASH
# 登録されているユーザーの総数を確認
wc -l /etc/apache2/.htdigest-internal
# 特定のレルム "Internal Dashboard" に属するユーザー一覧を表示
grep "Internal Dashboard" /etc/apache2/.htdigest-internal | cut -d: -f1
TEXT
5 /etc/apache2/.htdigest-internal
mori
まとめ
Digest認証は、ハッシュ化によってパスワードを保護する堅牢な認証方式であり、htdigestコマンドはその運用において不可欠なツールです。本手順で解説した通り、新規作成時と追記時のオプションの使い分け、そして何よりWebサーバー側の設定とレルム名を厳密に一致させることが運用の鍵となります。適切なディレクトリ配置と権限設定を組み合わせることで、特定の管理者や開発メンバーのみがアクセス可能な安全なWeb環境を構築できます。
