2013-09-16

Ubuntu12.04環境のApache2.2にDigest認証を設定する

Digest認証を設定するまでのメモ。 今までRedHat系しか触ったことが無かったので色々新鮮だった。

Basic認証とDigest認証の違い

Basic認証とDigest認証の違いは、「認証情報を暗号化するか否か」という点にある。 Basic認証はプレインテキストで書かれた認証情報をMIMEエンコードしただけで、デコードが簡単に行える。Digest認証はMD5で暗号化され、かつチャレンジ・レスポンス型認証のためセッションごとに値が変わるので暗号解読が困難になる。

必要なモジュールの確認をする

  • (1) mod_auth_digest(認証プロセス - Digest認証専用)
  • (2) mod_authz_user(承認プロセス)
  • (3) mod_authn_file(ユーザー情報をファイル形式で読み書きする)
$ sudo apache2ctl -M | grep auth
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)

→ mod_auth_digestだけ見つからない

インストールをする前に、組み込まれていないだけでインストールされていないかを確認する

※ debian系では /usr/lib/apache2/modules 以下にモジュールがある

$ ls -al /usr/lib/apache2/modules | grep auth
-rw-r--r-- 1 root root  10248  712 22:38 mod_auth_basic.so
-rw-r--r-- 1 root root  30728  712 22:38 mod_auth_digest.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authn_alias.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authn_anon.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authn_dbd.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authn_dbm.so
-rw-r--r-- 1 root root   6152  712 22:38 mod_authn_default.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authn_file.so
-rw-r--r-- 1 root root  30728  712 22:38 mod_authnz_ldap.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authz_dbm.so
-rw-r--r-- 1 root root   6152  712 22:38 mod_authz_default.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authz_groupfile.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authz_host.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authz_owner.so
-rw-r--r-- 1 root root  10248  712 22:38 mod_authz_user.so

→ あった

mod_auth_digestを組み込む前に一応利用可能モジュールにあるか確認する

$ls /etc/apache2/mods-available/ | grep auth
auth_basic.load
auth_digest.load
authn_alias.load
authn_anon.load
authn_dbd.load
authn_dbm.load
authn_default.load
authn_file.load
authnz_ldap.load
authz_dbm.load
authz_default.load
authz_groupfile.load
authz_host.load
authz_owner.load
authz_user.load

→ あった

auth_digestモジュールの有効化

$ sudo a2enmod auth_digest
Enabling module auth_digest.
To activate the new configuration, you need to run:
  service apache2 restart

apache再起動

$ sudo service apache2 restart
* Restarting web server apache2 ...

モジュールが組み込まれているか確認

$ sudo apache2ctl -M | grep auth
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
Syntax OK

→成功したっぽい

Digest認証の設定をapache2.confに書き込む

sudo -H vim /etc/apache2/apache2.conf

※ 以下を記載

<Directory "/var/www/">
  # Digese認証方式の指定
  AuthType Digest
  # 保護された領域に対するニックネームの指定
  AuthName "Digest Authentication Test"
  # ユーザー情報ファイルの指定
  AuthUserFile /etc/apache2/htdigest
  # 許可するユーザーの指定
  Require valid-user
</Directory>

パスワードファイルを作成する

$ sudo htdigest -c /etc/apache2/htdigest 'Digest Authentication Test' user01
Adding password for user01 in realm Digest Authentication Test.
New password: (パスワードの入力)
Re-type new password: (再度パスワードの入力)

apache再起動

$ sudo service apache2 restart
* Restarting web server apache2 ...

ブラウザで確認

2013-09-16-01.png
2013-09-16-01.png

よし、完了。

※ 参考