Apache 2.4.9 構築 6 - Digest認証

Contents


リバースプロキシの設定でテストサイトもインターネット側に公開することができましたが、あくまでテストサイトであり公開を目的としているわけではないので、テストサイトに関してはパスワード認証を使ってアクセスを制限しようと思います。


認証方式

パスワード認証は「Basic認証」と「Digest認証」があります。

方式 内容
Basic認証 HTTPリクエストヘッダにユーザ名とパスワードを埋め込んで送信する。ただし平文でユーザ名とパスワードがネットワークを流れる。
Digest認証  サーバから送られてくるランダムな文字列の他にユーザ名とパスワード、クライアントで生成したランダムな文字列をもとにMD5でハッシュ値を計算しサーバに送る。サーバもクライアントから送られてきたランダムな文字列とサーバ側に登録されているユーザ名とパスワード、ランダムな文字列でハッシュ値を計算し、クライアントから送られてきたハッシュ値と一致するかどうか確認する。

今どき平文っていうのもあるし、Digest認証でもほとんど手順は同じなのでDigest認証で設定をします。

 

モジュール確認

Digest認証で必要なモジュールが有効になっていることを確認します。

#vi /usr/local/httpd-2.4.9/conf/httpd.conf

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule auth_digest_module modules/mod_auth_digest.so

 

Digest認証用で使用するユーザ情報のファイルを作成

# /usr/local/httpd-2.4.9/bin/htdigest -c /usr/local/httpd-2.4.9/conf/<ファイル名> <realm> <ユーザ名>

→パスワード入力

オプションの-cはファイルを新規作成するときだけ必要です。realmは認証領域で再度パスワード認証が必要なときに同じrealmならrealmとともにクライアントに記憶されているユーザ名とパスワードをサーバに送信しますので、再入力する必要がなくなります。あとファイルは外部からアクセスできないところに置くように。

 

Digest認証の設定

今回はテストサイトのWEBサーバに設定するのではなく、前々回に設定したリバースプロキシに設定します。参考までに。

# WordPress Developer Site

<VirtualHost *:80>
    ServerName devwww.eastforest.jp
    ProxyPass / http://192.168.1.30/
    ProxyPassReverse / http://192.168.1.30/
    <Location />
        AuthType Digest
        AuthName <realm>
        AuthUserFile /usr/local/httpd-2.4.9/conf/<ファイル名>
        Require valid-user
    </Location>
</VirtualHost>
ディレクティブ 内容
AuthType 認証方式を指定
AuthName realmを指定
AuthUserFile ユーザ情報ファイルを指定
Require アクセスを許可するユーザを指定する。valid-userとするとユーザ情報ファイルに登録した全ユーザが対象となる。ユーザ個別の場合はRequire user <username>とする。

構文チェックしてapache再起動します。

# /etc/init.d/httpd configtest
# /etc/init.d/httpd restart

 

参考サイト:
http://e-words.jp/w/DigestE8AA8DE8A8BC.html
http://vogel.at.webry.info/201311/article_9.html

参考