SubversionのApache経由通信にDigest認証をかける
色々わけわかんないところでつまづいたけど、なんとかできた。
基本的に、SVN 用の Apache の設定は/etc/apache2/mods-enabled/dav_svn.conf に記述。
<location /svn>
DAV svn
SVNParentPath /home/username/svn
AuthType Digest
AuthName "Subversion repository"
AuthUserFile /home/username/svn/.htdigest
Require valid-user
</location>
Apache の認証でよく使われる Basic 認証はパスワードを平文で流すので使いません。Digest 認証は 平文では流さないのでちょっとだけ安全。
で、Apache2.0 系だとパスワードの設定ファイルを指定するのが「AuthDigestFile」だったのですが、 Apache2.2 からは Basic 認証と同じ「AuthUserFile」に戻ったらしいです。これをミスってると 以下のエラーが出ました。
Invalid command 'AuthDigestFile', perhaps misspelled or defined by a module not included in the server configuration
また、.htdigest ファイルの生成はターミナルで以下の様にします。
$ htdigest -c ~/svn/.htdigest "Subversion repository" user_name
Adding password for user_name in realm Subversion repository.
New password:
Re-type new password:
パスワードを 2 回入力すれば OK。どうも、”Subversion repository”の部分は設定ファイルの AuthName と一致していないとダメらしいです。
さらに、Ubuntu の場合、auth_digest っていう Apache モジュールを有効にしないといけません。 これをしないと多分 Internal Server Error が返ってきます。で、Ubuntu でのモジュールの有効化の やり方はたしか、/etc/apache2/mods-enabled にリンクを置くんだったと思いますが、 面倒なので Webmin を使って設定しちゃいました。Webmin の導入は書くの忘れた。そのうち書くかも しれませんが、ブラウザ経由でサーバの設定が色々できるので便利ですね。
ということで、こうしておくと自分だけが見れる Subversion レポジトリの完成。 クライアントからアクセスしようとするとユーザ名とパスワードを聞かれるようになりました。
参考サイト
-
どんぶら 11-02-08 (火) 11:02
まとまっていて助かりました。感謝!!
# a2enmod auth_digest
/etc/init.d/apache2 restart