今回は認証を
Basic認証からDigest認証に変更する方法です。
まず
Basic認証とDigest認証についての説明を
Basic認証は
・ユーザ名とパスワードの組みをコロン ":" で繋ぎ、
Base64で
エンコードして送信する。このため、盗聴や改竄が簡単であるという欠点を持つ
Digest認証は
・ユーザ名とパスワードを
MD5でハッシュ(ダイジェスト)化して送る。
Basic認証では防げなかった盗聴や改竄を防ぐために考案された。
となります。ただまぁ
MD5も破られたやらなんやら。
けど
Basic認証よりはマシだと思うので変更します。
まずDigest認証の機能をON(これやらなくてずっと500エラー喰らってました)
$ sudo a2enmod auth_digest
次にDigest認証用のパスワード作成。
前回のやりかたに則って進めます。
認証用のパスワードファイル「
dav.passwd」を作成します。ユーザー名を「
server」とします。パスは例によって「
yyyy」
$ cd /etc/apache2/
$ sudo htdigest -c ./dav.passwd "welcome to my server" server
New password:yyyy
Re-type new password:yyyy
Adding password for user server
前と同じく1人目は-cオプションを付け、2人目以降は外してください。
Basicパスとの違いは、
htpasswd→htdigestと、
引数に"で囲まれたrealmを必要とする点です。
一応隠しファイルにしときましょう。先頭に「.」(ドット)を付けます。
$ sudo mv dav.passwd .dav.passwd
パスワードファイルのオーナー&
パーミッションを変更。
$ sudo chown www-data:www-data ./.dav.passwd
$ sudo chmod 600 ./.dav.passwd
次に
apacheの設定。今回は
SSLで使用するのでdefault-
sslを変更します。以前のやつを元に、
紫部分を変更します。
<ifmodule mod_dav_fs.c=""><Location /dav>
DAV on
SSLRequireSSL
Options Indexes
Order deny,allow
AuthType Digest
AuthName "welcome to my server" ←パスで書いたrealmと一致させる
AuthUserFile /etc/apache2/.dav.passwd
Require valid-user
</Location>
</IfModule>
最後に
apacheを再起動して完了。
$ sudo /etc/init.d/apache2 restart
ソース:
WebDAV(Digest認証)