2015年3月29日日曜日

Apache2でDigest認証を設定した

Aapcheで稼働しているWebサーバ上で,特定のページをパスワードで認証をかけたい!

そのために,今回はDigest認証を行いました.

一般的にベーシック認証もありますが,こちらの方がより安全とのことです.
ダイジェスト認証を設定する(AdminWeb)に従って進めました.

認証の準備

htdigestを使用するそうですが,インストールされていなかったためapt-getでインストールしました.
$ htgiest
-bash: htgiest: command not found
$apt-cache search htdigest
apache2-utils - Apache HTTP Server (utility programs for web servers)
$sudo apt-get install apache2-utils

また,Apache2のDigest認証のモジュールも有効にします. その後は当然再起動が必要ですが,まだApache2の設定が必要であるため,あとでまとめてやります.
$sudo a2enmod auth_digest
それでは,/etc/apache2/.digestpassをパスファイルとして自分の認証キーを追加します.
$sudo htdigest -c "/etc/apache2/.digestpass" "Digest Authentication" hiroyky
New password: 
Re-type new password: 
$sudo cat /etc/apache2/.digestpass  ←確認

Apacheの設定

今回は,ディレクトリではなくURL毎に制限を掛けたかったため先ほどのページとは異なり Locationで制限をかけました.といってもやり方は同じです.サイトの設定ファイルを編集します. 以前,gitlistを稼働させましたが,チームのメンバーだけなど限られた人のみが閲覧できるリポジトリにしたかったわけなのです. http://<my domain>/gitlist 以下を全て認証を行うようにします.
$sudo emacs /etc/apache2/sites-avairable/<サイトの設定ファイル>

    AuthType Digest
    AuthName "Digest Authentication" ←htdigestコマンドの2つめの引数,認証名と同じにする
    AuthUserFile "/etc/apache2/.digestpass"
    Require valid-user

で,Apacheを再起動します.
$sudo service apache2 restart

で〜きた!