Carpe Diem

備忘録。https://github.com/jun06t

Digest認証

今回は認証を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="">
Alias /dav "/var/www/webdav"
<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認証)