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