SVNリポジトリをhttp(WebDAV)でアクセス出来るようにする(Digest認証化)[追記・訂正あり]

パソコン・インターネット

Mac OS X 10.5.8
Leopardで、Subversion(SVN)によるWebサイト(ホームページ)の管理システムを構築しました。何回かに分けて、紹介しています。

SVNリポジトリをhttp(WebDAV)でアクセス出来るようにする方法をまとめましたが、この方法は、ユーザーとパスワードの確認にBasic認証を使っている為、ネットワークに平文のパスワードが流れると言う問題があります。

これを解決する為、Digest認証に変更します。

/etc/apache2/other/svn.confに次の内容を設定します。すでに、Basic認証用のsvn.confを作っていたら、あらかじめ別の名前でコピーしておきます。(sudo cp svn.conf svn.conf.basic等)

# Subversion connections
LoadModule dav_svn_module    libexec/apache2/mod_dav_svn.so
<Location /svn>
   DAV svn
   SVNListParentPath on
   SVNParentPath /Users/Svn/repos
   #SVNIndexXSLT "/svnindex.xsl"
   AuthType Digest
   AuthName "Subversion repositories"
   AuthDigestFile /Users/Svn/svn_digest
   Require valid-user
</Location>

(追記 2011-12-18 00:16 OS X 10.7.2 Lionの場合は、次の様になります。)

# Subversion connections
LoadModule dav_svn_module    libexec/apache2/mod_dav_svn.so
<Location /svn>
   DAV svn
   SVNListParentPath on
   SVNParentPath /Users/Svn/repos
   #SVNIndexXSLT "/svnindex.xsl"
   AuthType Digest
   AuthName "Subversion repositories"
   AuthUserFile /Users/Svn/svn_digest
   Require valid-user
</Location>

次に、パスワードファイルを新規に作成します。そして、アクセス権を正しく設定します

$ cd /Users/Svn
$ sudo htdigest -c svn_digest "Subversion repositories" user1
Adding password for user1 in realm Subversion repositories.
New password:
Re-type new password:
$ sudo chown www:www svn_digest
$ sudo chmod 600 svn_digest
$ ls -l svn_digest
-rw-------  1 _www  _www  64  4  9 21:29 svn_digest

なお、既存のパスワードファイルにユーザーを追加する時は、htdigestに"-c"オプションは付けないで下さい。

この後、システム環境設定→共有で、Web共有のチェックを外して、もう一度チェックします。

これで、Digest認証で接続出来るはずです。

なお、暗号化されるのは認証の時だけで、svnの通信は暗号化されませんので、念のため。

次のページを参考にしました。ありがとうございます。

(追記 2011-12-18 00:16)

OS X 10.7.2 Lionでは、AuthDigestFileではなく、AuthUserFileを指定するように、変わったようです。

システム環境設定→共有で、Web共有ができなくなってしまいました。

修正するまでは、次のエラーが出ていました。

$ apachectl configtest
Syntax error on line 11 of /etc/apache2/other/svn.conf:
Invalid command 'AuthDigestFile', perhaps misspelled or defined by a module not included in the server configuration

次のページを参考にさせていただきました。ありがとうございます。

【シリーズ記事】

SVNによるWebサイト(ホームページ)管理

  1. SVNリポジトリの作成
  2. SVNリポジトリをhttp(WebDAV)でアクセス出来るようにする
    SVNリポジトリをhttp(WebDAV)でアクセス出来るようにする(おまけ)
    SVNリポジトリをhttp(WebDAV)でアクセス出来るようにする(Digest認証化)
  3. SVNリポジトリの中にサイトデータを作る
  4. サイトデータの作業コピーでの作業(ターミナル編)
    サイトデータの作業コピーでの作業(Emacsのpsvn編)
  5. SVNでローカルサイトの自動更新
  6. ローカルサイトをアクセス出来るようにする
  7. ローカルサイトからインターネットへ

(訂正 2011-02-14 00:17)パスワードファイルの設定方法を間違えていたので、訂正しました。

Posted by お市のかた