Digest認証【ダイジェスト認証】設定

備忘録を兼ねてDigest認証【ダイジェスト認証】の簡単な説明

WEBブラウザでのHTTPとの認証として、Basic認証【ベーシック認証】があるが、ある一定の規則に伴って符号化する方式なので、暗号化されているわけではない。

認証を前提にしたサイトを構築する場合、セキュリティの観点からあまり好ましくない。

この欠点を補った認証方法として、MD5を利用して暗号化する、Digest認証【ダイジェスト認証】が後発で考えられた。

apacheの拡張モジュールをビルドして、インストールするapxsを利用
環境
OS:Linux
apache:2系

apache2系のソースを展開し、下記のディレクトリに移動

# cd ~/httpd-2.*.*/modules/aaa
※モジュール確認【mod_auth_digest.c】

apxsを使ってmod_auth_digest.cのコンパイル

# /usr/local/apache/bin/apxs -c -D DEV_RANDOM  mod_auth_digest.c【enter】
/usr/local/apache/build/libtool –silent –mode=compile gcc -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -O2 -pthread -I/usr/local/apache/include  -I/usr/local/apache/include   –  I/usr/local/apache/include  -DDEV_RANDOM  -c -o mod_auth_digest.lo mod_auth_digest.c && touch mod_auth_digest.slo
/usr/local/apache/build/libtool –silent –mode=link gcc -o mod_auth_digest.la  -rpath /usr/local/apache/modules -module -avoid-version    mod_auth_digest.
※ -c:コンパイル
※ -D DEV_RANDOM:乱数生成に/dev/randomを用いる
※ ~/httpd-2.*.*/modules/aaa/.libs/mod_auth_digest.soが生成される。

mod_auth_digest.soのインストール

# /usr/local/apache/bin/apxs -i -n -a .libs/mod_auth_digest.so【enter】
/usr/local/apache/build/instdso.sh SH_LIBTOOL=’/usr/local/apache/build/libtool’ .libs/mod_auth_digest.so /usr/local/apache/modules
/usr/local/apache/build/libtool –mode=install cp .libs/mod_auth_digest.so /usr/local/apache/modules/
cp .libs/mod_auth_digest.so /usr/local/apache/modules/mod_auth_digest.so
Warning!  dlname not found in /usr/local/apache/modules/mod_auth_digest.so.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache/modules/mod_auth_digest.so
※  -i:mod_auth_digest.soがapache2のmodulesディレクトリにコピーされる
※ -n:モジュール名指定時使用
※ -a:httpd.conf にLoadModuleディレクティブを追加
httpd.confにLoadModuleディレクティブを追加出来なかった場合、viで以下を追加する
LoadModule auth_digest_module modules/mod_auth_digest.so

パスワードファイル作成

# /usr/local/apache/bin/htdigest -c /***/***/.htdigest NAME USER【enter】
Adding password for recal in realm NAME.
New password:パスワード
Re-type new password:パスワード

※ -c:新しいファイル生成
※ NAME:適当な名前
※ USER:ユーザ名

apacheのconfigファイル変更

<Directory “/***/***/***/***/directory”>
AuthType Digest
AuthName “NAME”
AuthDigestDomain /directory/
AuthUserFile “/***/***/.htdigest”
Require user USERNAME
</Directory>

※ apache2.2系より設定内容が変わっているようです。
以下のサイトを参考にしました。
http://httpd.apache.org/docs/2.2/mod/mod_auth_digest.html

apache再起動

/***/***/httpd stop
/***/***/httpd start

終了
注)ディレクトリ配置である「***」は各サーバ環境に合わせて下さい。

Digest認証させたい箇所にアクセスすると以下の画面が表示されます。(ブラウザはSafari)
digest_001

ここに設定したユーザ名&パスワードを入力し、成功するとログイン出来ます。
見た目はBasic認証と変りありません。

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。

Speak Your Mind

*