Ubuntu+Apache2でDigest認証を行う

Apacheはデフォルト設定のままで、ドキュメントルートは/var/www/htmlから変更していない。ドキュメントルート直下にsecretと言うディレクトリを作って認証設定する例。
(2016-12-03追記) Raspberry Pi 3でも同様の手順でDigest認証の設定が行えるのを確認。環境は以下の通り。
  • Raspberry Pi 3 Model B
  • RASPBIAN JESSIE LITE(September 2016)
  • Apache 2.4.10 (Raspbian)
Digest認証のパスワードファイルを生成する
この時にrealmと呼ばれる認証領域を指定する。このrealmが同じディレクトリは認証済みとしてアクセスできるようにするためのものらしい。要は複数のディレクトリにDigest認証をかけるときに、ユーザーやパスワードは共通にすることが出来るという認識だと思う。下の例でいくと、realmは"DigestAuth"で、adminと言うユーザーを作成する。このコマンドを実行するとadminのパスワードを求められるので入力する。
$ sudo htdigest -c /etc/apache2/.digestauth "DigestAuth" admin
一応、ちゃんと作成できたか確認。
$ cat /etc/apache2/.digestauth
Apacheの設定ファイルに追加する
Digest認証をかけるディレクトリを指定する。
$ sudo nano /etc/apache2/sites-available/000-default.conf<VirtualHost *:80>
  .....
  .....
  # 設定ファイルのVirtualHostのタグ内に以下の記述を追加
  <Directory /var/www/html/secret>
    AuthType Digest
    AuthName "DigestAuth"
    AuthDigestDomain /secret/
    AuthUserFile /etc/apache2/.digestauth
    Require valid-user
  </Directory>
</VirtualHost>
ApacheのDigest認証を有効にして再起動する
$ sudo a2enmod auth_digest
$ sudo service apache2 restart
アクセスしてみる
設定したディレクトリにアクセスして認証ダイアログが表示されるか確認する。 digest_auth1
    この記事で書かれている製品やソフトについて
  • Ubuntu 16.04.1 LTS
  • Apache 2.4.18