UbuntuでApacheのDigest認証をやってみる

Digest認証はパスワードが暗号化されるので、インターネットで公開するようなサイトでも安心して使用できる。UbuntuでApacheのDigest認証の設定方法をメモしておく。


1.認証が必要となるディレクトリを作成する

$ sudo mkdir -p /var/www/dgt-himitu

2.認証に使うユーザーとパスワードを作る

  • ユーザー名: bar
  • パスワード: passwd
  • パスワードファイルのフルパス: /etc/apache2/.htdigest
$ sudo htdigest -c /etc/apache2/.htdigest 'HIMITU Zone' bar
Adding password for bar in realm HIMITU Zone.
New password: 
Re-type new password: 

初めてパスワードファイルを作るときは -c オプションを指定する。

3.Apacheの設定ファイルに追加する

http://localhost/dgt-himitu を閲覧したとき、認証されるように設定ファイルに下記を追加する。

<Directory "/var/www/dgt-himitu">
    AuthType Digest
    AuthName "HIMITU Zone"
    AuthDigestDomain /dgt-himitu/
    AuthUserFile /etc/apache2/.htdigest
    Require valid-user
</Directory>
  • AuthName: 領域名を定義する。領域名が同じならば、画面が変わっても認証されたことになり認証画面は表示されない。
  • AuthUserFile: パスワードファイルの場所をフルパスで指定する
  • Require valid-user: 認証されたユーザのみ閲覧可能とする

Ubuntuの場合、インストール直後は、設定ファイルは/etc/apache2/sites-available/defaultなのでコピーしてから修正していくと便利。ここでは mysite2 にコピーする。

$ cd /etc/apache2/sites-available
$ sudo cp default mysite2

$ sudo vi /etc/apache2/sites-available/mysite2
<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    <Directory "/var/www/dgt-himitu">
        AuthType Digest
        AuthName "HIMITU Zone"
        AuthDigestDomain /dgt-himitu/
        AuthUserFile /etc/apache2/.htdigest
        Require valid-user
    </Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined
</VirtualHost>

設定ファイル /etc/apache2/sites-available/default を無効にする

$ sudo a2dissite default

新しい設定ファイル /etc/apache2/sites-available/mysite2 を有効にする

$ sudo a2ensite mysite2

mod_auth_digestモジュールを有効にする

$ sudo a2enmod auth_digest
Enabling module auth_digest.
Run '/etc/init.d/apache2 restart' to activate new configuration!

Apacheに設定ファイルを読み込ませ、再起動する

$ sudo /etc/init.d/apache2 reload

mod_auth_digestモジュールが有効になっていないと下記メッセージが表示されてApache起動に失敗する。

$ sudo /etc/init.d/apache2 reload
Syntax error on line 19 of /etc/apache2/sites-enabled/mysite2:
Invalid command 'AuthDigestDomain', perhaps misspelled or defined by a module not included in the server configuration
   ...fail!

4.ブラウザで動作確認

Firefoxで http://localhost/dgt-himitu をアクセスすると、認証画面が開く。

参考にしたサイト

【送料無料】Apacheセキュリティ

【送料無料】Apacheセキュリティ
価格:3,780円(税込、送料別)