Apacheでダイジェスト認証を行う

Apacheでダイジェスト認証を行う方法をご紹介します。

ダイジェスト認証とは?

ベーシック認証ではユーザー名やパスワードが平文で送信されます。

一方、ダイジェスト認証を利用すれば、MD5で暗号化して送信されるので安全に通信ができます。

手順の確認

今回はApacheのトップページにダイジェスト認証をかけてみます。

手順を確認しておきましょう。

  1. ダイジェスト認証のモジュールを有効にする
  2. ダイジェスト認証の設定を行う
  3. 再起動して確認

モジュールを有効にする

まずはダイジェスト認証に必要なモジュールを有効にしましょう。

a2enmod auth_digest

ダイジェスト認証の設定

それでは設定ファイルの編集を行っていきましょう。

apache2.conf

最終的には次のよう記述になります。

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        AuthName "digest test"
        AuthType Digest
        AuthDigestDomain "/var/www/"
        AuthDigestProvider file
        AuthUserFile "/etc/apache2/passwd/.htdigest"
        Require valid-user
</Directory>

各項目の設定も確認しておきます。

AuthType

ダイジェスト認証なのでDigestとします。

AuthName

realm(領域)名を指定します。

何でも構いませんが、htdigestコマンドで使用するときに指定しますので、今はわかりやすいものが良いでしょう。

AuthDomainDigest

認証領域を指定します。

/var/www/に認証をかけたいので/var/www/とします。

他の領域に欠ける場合は、スペース区切りで追加することができます。

AuthDigestProvider

今回はhtdigestコマンドで作成したファイルを使用しますので、fileとします。

AuthUserFile

htdigestコマンドで作成したパスワードをファイルを指定します。

Require

valid-userはパスワードファイルに記述されているユーザーであれば誰でも許可します。

パスワードファイルの作成

次にダイジェスト認証に使うパスワードファイルを作成しましょう。

ベーシック認証のときはhtpasswdでしたが、ダイジェスト認証ではhtdigestになります。

htdigest -c /etc/apache2/passwd/.htdigest  "digest test" kana

htdigestコマンドの構文は次のようになっています。

htdigest パスワードファイル  領域名 ユーザー名

-cをつけると新規でファイルを作成します。

ユーザーを追加するときは-cオプションを抜きましょう。

動作確認

Apacheを再起動して設定を反映させます。

apachectl restart

トップページにアクセスして認証できるか確認してみましょう。

まとめ

ベーシック認証もダイジェスト認証も設定方法はほとんど同じです。

社内で使うなど、特別な理由がなければダイジェスト認証のほうが安全です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です