Apache設定編② Digest認証の設定 Linuxサーバ構築手順まとめ
前回のApacheのBasic認証の設定に引き続き、今回も「Apache」の認証についてみていきましょう。
今回取り上げるのは「Digest認証」と呼ばれている認証形式です。
設定内容自体は殆どBasic認証と変わらないので、Basic認証を覚えている人は、
すんなり理解できるでしょう。
ダイジェスト認証って何?
ではBasic認証とDigest認証はどこが違うのでしょうか?
前回説明した通り、Basic認証は、サーバへユーザ名とパスワードを送信するときに平文(プレーンテキスト)で送信するため、盗聴されるとすぐにユーザ名とパスワードがばれてしまうという点で、簡易的な認証に過ぎないという話をしました。
Digest認証はこの点がBasic認証に比べて、強化された認証方式になるのです。
Digest認証の流れを以下にまとめます。
1.ブラウザからDigest認証が必要なページへリクエスト
2.サーバはDigest認証が必要という情報と、ランダム文字列を返却
3.ブラウザはサーバから送られたランダム文字列と別のランダム文字列の2つを使用し、ユーザ名とパスワードを使ってハッシュ値を生成し、サーバへ送信
4.サーバは送信されたハッシュ値と、サーバ側に格納しているユーザ・パスワード情報から生成したハッシュ値を比較する。等しければ認証成功。異なっていれば認証失敗となる。
流れはほぼBasic認証と同じなのですが、送信時にハッシュ化しているという点が大きく異なります。
それでは、Digest認証の設定をしていきましょう。
Digest認証の設定をしよう。
まずはざっとDigest認証設定の手順をまとめましょう。
2.パスワードの設定
3.Apacheの再起動
4.Digest認証の確認
全体の流れを押さえたところで、個別にみていきましょう。
1.httpd.confの編集
Basic認証同様、httpd.confファイルを開きます。
前回同様、バックアップを忘れずに!
1-1.まず、httpd.confファイルを編集するために、viコマンドでファイルを開きます。
(編集前にバックアップをとることを忘れずに。)
# cd /etc/httpd/conf/ (←httpd.confのあるところまで移動) # cp httpd.conf httpd.conf.bk (←コピーを取る) # vi httpd.conf (←httpd.confを開く)
1-2.httpd.confに以下を追記します。
一番最後に追記しても構いませんが、「Directory ~」の記述の続いている部分があるので、
その最後尾に配置する方がわかりやすいかと思います。
<Directory "/var/www/html/test_digestauth"> AuthType Digest AuthName "Digest Auth" AuthUserFile "/etc/httpd/conf/.htdigest" Require valid-user </Directory>
AuthType:認証のタイプを意味します。今回は「Digest」つまりダイジェスト認証ですね。基本認証のときは「Basic」とします。
AuthName:認証領域を意味します。一度認証が通ると、同一領域内のページはブラウザを閉じるまでは、認証無しで見ることができます。Basic認証と同じですが、この後のパスワード設定において、必要になってくる項目ですので注意しておきましょう。
AuthUserFile:パスワードを格納しているファイルを指定します。
Require:認証を許可するユーザを指定します。今回は「valid-user」としていますが、これは、認証が通った全ユーザは全て許可するという設定です。
2.パスワードの作成
htdigestコマンドを使用し、.htdigestファイルにパスワードの指定を行います。
以下のコマンドを使用することで、パスワードを格納しておくファイルが作成できます。
# htpasswd -c "/etc/httpd/conf/.htdigest" "Digest Auth" testuser
「c」オプションで、ファイルの新規作成、
「”/etc/httpd/conf/.htdigest”」でパスワード格納ファイルのパス指定、
「”Digest Auth”」で認証領域の指定、
「testuser」で、アカウントの指定を行っています。
認証領域の指定が、httpd.confでの設定と異なっていると認証が上手くいきませんので注意しましょう。
3.Apacheを再起動する。
Apacheを再起動することでhttpd.confが再ロードされます。
4.Digest認証の確認
それでは認証が必要なディレクトリの配下にサンプルページを一つ作成してみましょう。
# mkdir /var/www/html/test_digestauth # cd /var/www/html/test_digestauth # vi test.html
確認用に簡単なHTMLファイルを作成しましょう。
<html> サンプルページ(Digest認証用)です。 </html>
ブラウザで以下のURLにアクセスしてみましょう。
http://[サーバのドメインまたはIPアドレス]/test_digestauth/test.html
Basic認証と同じように認証画面が表示されたらDigest認証が効いています。
ユーザ名とパスワードを入力し、上記で作成したサンプルページが表示されるかを確認してみましょう。
補足
Basic認証は、Apacheの標準モジュールとして装備されているため、Apacheをインストールすればそのまま使用できることが大半です。一方Digest認証を成立させるためのモジュール「auth_digest_module」は、デフォルトでは無効になっている場合が多いです。そのため、Digest認証を実装するためには、このモジュールを有効にする作業を忘れないようにしましょう。具体的には、httpd.confの中の「LoadModule~」という記述が書かれている箇所から「auth_digest_module」をロードしている箇所を探し出し、そこのコメントアウトを外してあげれば(行頭の「#」をトル)OKです。
上記のような理由からBasic認証に比べてDigest認証は使用頻度が多くない為、あまり出会う機会がないかもしれません。しかし設定方法はそれほど難しいものではないので、Basic認証と合わせて覚えておくとよいでしょう。