LoginSignup
0
0

More than 1 year has passed since last update.

ダイジェスト認証  #1 Apache設定~動作確認

Last updated at Posted at 2021-06-30

「CTFの練習問題」的な文脈で「ダイジェスト認証」に触れる機会がありました。復習兼ね関連する要素(Webサーバ側設定/サーバ・クライアント挙動/ローカルプロキシツール・・・)について確認・検証をしたいと思います。

Apacheでの設定

Docker、わかっているかわかっていないかでいえば、わかっていないですがとりあえずイメージを落として起動してみたところ、2.4.46というバージョンでした。

httpd.conf

「auth_digest_module」というものが必要とのこと、デフォルトコメントですのでコメント外して有効化しました。
また、この後.htaccessでディレクトリに対してダイジェスト認証設定をするため、ドキュメントルートは以下を「AllowOverride All」としています。

htdigest

ダイジェスト認証用のユーザを作成するコマンドです。

# htdigest
Usage: htdigest [-c] passwordfile realm username
The -c flag create a new file.

とのことですので

# htdigest -c ../conf/passwords digest digest_user
Adding password for digest_user in realm digest.
New password:
Re-type new password:

ここでパスワードを「password」とした場合、生成されるpasswordsファイルには以下の1行が登録されます。

digest_user:digest:46328f2142603a1d167a1a19de5210bf

「:」区切りの3つ目の要素が後述のHA1となりますが、これは以下のコマンドで取得できるハッシュ値と一致します。

$ echo -n "digest_user:digest:password" | md5sum
46328f2142603a1d167a1a19de5210bf

ダイジェスト認証を要求するディレクトリの設定

htdocs/digest ディレクトリをダイジェスト認証必要と位置付け、.htaccessでダイジェスト認証の設定を行いました。

AuthType Digest
AuthName "digest"
AuthUserFile /path_to_passwords_file/passwords
Require valid-user

動作確認

当該パスをリクエストすると、以下がレスポンスされ
digest01.JPG
ブラウザ側では例のユーザ・パスワードを求めるダイアログが表示されます。
digest02.JPG
上記で登録したユーザ・パスワードを入力して「ログイン」を押下すると、以下がリクエストされ、接続許可(200 OK)されました。
digest03.JPG
response="XXX" の部分がサーバ側から与えられたnonce等の値と、ブラウザでユーザにより入力されたユーザ、パスワード等から生成された値であり、サーバ側でも同じ情報・アルゴリズムで生成して値を比較、認証OK/NGを返すという流れと理解。

続編にてこのresponse="XXX"の算出手順を検証・確認します。

2021年06月30日 初版

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0