mac:mac_os_x_v10.6でsubversionリポジトリのパスベース認証を行う

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
mac:mac_os_x_v10.6でsubversionリポジトリのパスベース認証を行う [2011-02-25 01:03]
Decomo
mac:mac_os_x_v10.6でsubversionリポジトリのパスベース認証を行う [2015-01-06 11:51] (現在)
行 1: 行 1:
 ====== Mac OS X v10.6でSubversionリポジトリのパスベース認証を行う ====== ====== Mac OS X v10.6でSubversionリポジトリのパスベース認証を行う ======
  
-Snow Leopardからmod_dav_svnが標準で入っているようで、WebDAVを用いたSubversion環境を作りやすくなったっぽいので挑戦してみたメモ。+Snow Leopardからmod_dav_svnが標準で入ようで、WebDAVを用いたSubversion環境を作りやすくなったっぽいので挑戦してみたメモ。
  
 ===== 前提条件 ===== ===== 前提条件 =====
行 9: 行 9:
   * プロジェクトごとにリポジトリを作り、プロジェクトごとにアクセス制御出来るようにする。   * プロジェクトごとにリポジトリを作り、プロジェクトごとにアクセス制御出来るようにする。
   * リポジトリ置き場:/doko/soko/svn/repos/   * リポジトリ置き場:/doko/soko/svn/repos/
 +  * SVNサーバアドレス:mysvn.info
  
 ===== httpd.confの編集 ===== ===== httpd.confの編集 =====
-/etc/apache2/httpd.conf のLoadModuleの最後に以下を追加。  +''/etc/apache2/httpd.conf''のLoadModuleの最後に以下を追加。  
-<code> +<file>
-$ sudo emacs /etc/apache2/httpd.conf+
 LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
 LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so
-</code> +</file>
-viを使えないヘタレ野郎です。すいません。+
  
 ===== mod_dav_svnの設定 ===== ===== mod_dav_svnの設定 =====
-/etc/apache2/other/subversion.conf でmod_dav_svnの設定をする。拡張子が.confならファイル名は何でもおk。 +''/etc/apache2/other/subversion.conf''でmod_dav_svnの設定をする。拡張子が.confならファイル名は何でもおk。 
-<code>+<file>
 <IfModule dav_svn_module> <IfModule dav_svn_module>
  
-<Location /svn-repos>+<Location /svn-repos>                  # リポジトリにアクセスする際のURL(http://mysvn.info/svn-repos)の一部になる
     DAV svn     DAV svn
     SVNListParentPath on     SVNListParentPath on
-    SVNParentPath /doko/soko/svn/repos+    SVNParentPath /doko/soko/svn/repos # リポジトリの実際のパス
 </Location> </Location>
  
 </IfModule> </IfModule>
-</code>+</file>
  
 ===== リポジトリの所有者の変更 ===== ===== リポジトリの所有者の変更 =====
行 37: 行 36:
 $ sudo chown -R _www:_www /doko/soko/svn/repos $ sudo chown -R _www:_www /doko/soko/svn/repos
 </code> </code>
-敢えて変な設定をしてなければ、パーミッションは特に弄る必要なし。設定するなら755とかその辺で。 
  
 ==== 確認 ==== ==== 確認 ====
行 45: 行 43:
  
 ===== アクセス制御 ===== ===== アクセス制御 =====
-subversion.confを再度開き、認証に必要なの設定を追加する。+''subversion.conf''を再度開き、認証に必要なの設定を追加する。
  
-<code>+<file>
 <IfModule dav_svn_module> <IfModule dav_svn_module>
  
行 55: 行 53:
     SVNParentPath /doko/soko/svn/repos     SVNParentPath /doko/soko/svn/repos
     Satisfy Any                                # 匿名ユーザーを許可     Satisfy Any                                # 匿名ユーザーを許可
-    Require valid-user                         # でダメ正規ユーザーを要求+    Require valid-user                         # 匿名ユーザーが許可さい操作は正規ユーザーを要求
     AuthType Basic                             # ベーシック認証を使う     AuthType Basic                             # ベーシック認証を使う
-    AuthUserFile /doko/soko/svn/htpasswd       # ベーシック認証のユーザーとパスワード情報 +    AuthName "Subversion Authorization"        # 認証領域の設定。設定を忘れると500エラーで小一時間苦しむことになるので注意。 
-    AuthzSVNAccessFile /doko/soko/svn/authz    # リポジトリのアクセス制御情報+    AuthUserFile /doko/soko/svn/htpasswd       # ベーシック認証のユーザーとパスワードファイル 
 +    AuthzSVNAccessFile /doko/soko/svn/authz    # リポジトリのアクセス制御情報ファイル
 </Location> </Location>
  
 </IfModule> </IfModule>
-</code>+</file>
  
 ==== 正規ユーザーの設定 ==== ==== 正規ユーザーの設定 ====
-<ilcode>AuthUserFile</ilcode>で指定したファイルにベーシック認証ユーザーを追加する。+''AuthUserFile''で指定したファイルにベーシック認証ユーザーを追加する。
 <code> <code>
 $ sudo htpasswd -c /doko/soko/svn/htpasswd Decomo $ sudo htpasswd -c /doko/soko/svn/htpasswd Decomo
行 76: 行 75:
  
 ==== リポジトリのアクセス制御の設定 ==== ==== リポジトリのアクセス制御の設定 ====
-<ilcode>AuthzSVNAccessFile</ilcode>で指定したファイルにアクセス制御情報を書く。+''AuthzSVNAccessFile''で指定したファイルにアクセス制御情報を書く。
  
-<code>+<file>
 [groups] [groups]
 admins = Decomo admins = Decomo
行 94: 行 93:
 Decomo = rw Decomo = rw
 * = * =
-</code>+</file>
  
 ===== SSLの設定 ===== ===== SSLの設定 =====
-自分用のリポジトリならHTTPのままでもさほど問題ない気もするが、平文でのやり取り精神的に宜しくないので、HTTPSで通信できるように設定する+ここかSSLに関する設定。HTTPのままで良ければ以下は設定する必要はない。
  
 ==== 秘密鍵の生成 ==== ==== 秘密鍵の生成 ====
行 106: 行 105:
 # openssl genrsa -aes256 2048 > server.key # openssl genrsa -aes256 2048 > server.key
 Generating RSA private key, 2048 bit long modulus Generating RSA private key, 2048 bit long modulus
-............................+++ +..................................................................................................+++ 
-..................................++++..............+++
 e is 65537 (0x10001) e is 65537 (0x10001)
 Enter pass phrase: Enter pass phrase:
行 114: 行 113:
  
 ==== 公開鍵の生成 ==== ==== 公開鍵の生成 ====
-# openssl req -new -key server.key > server.csr+<code> 
 +# openssl req -new -key server.key >server.csr 
 Enter pass phrase for server.key: Enter pass phrase for server.key:
 You are about to be asked to enter information that will be incorporated You are about to be asked to enter information that will be incorporated
行 125: 行 125:
 Country Name (2 letter code) [AU]:JP Country Name (2 letter code) [AU]:JP
 State or Province Name (full name) [Some-State]:Kanagawa State or Province Name (full name) [Some-State]:Kanagawa
-Locality Name (eg, city) []:Yokohama-shi,Koh-hoku-ku                +Locality Name (eg, city) []:Yokohama-shi
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:PRODUCTION KusoGA Organization Name (eg, company) [Internet Widgits Pty Ltd]:PRODUCTION KusoGA
-Organizational Unit Name (eg, section) []:CA    +Organizational Unit Name (eg, section) []:CA 
-Common Name (eg, YOUR name) []:kusoga.mine.nu +Common Name (eg, YOUR name) []:ホスト名 
-Email Address []:admin_master@decomo.info+Email Address []:メールアドレス
  
 Please enter the following 'extra' attributes Please enter the following 'extra' attributes
 to be sent with your certificate request to be sent with your certificate request
-A challenge password []: +A challenge password []: 空白          
-An optional company name []:+An optional company name []: 空白 
 +</code> 
 + 
 +==== 自己証明書の生成 ==== 
 +<code> 
 +# # openssl x509 -in server.csr -days 3650 -req -signkey server.key > server.crt 
 +Signature ok 
 +subject=/C=JP/ST=Kanagawa/L=Yokohama-shi/O=PRODUCTION KusoGA/OU=CA/CN=ホスト名/emailAddress=メールアドレス 
 +Getting Private key 
 +Enter pass phrase for server.key: 
 +</code> 
 + 
 +==== 秘密鍵のパスワードの解除 ==== 
 +上記方法で生成したキーだとApacheの起動時にパスワードの入力を求められるらしいが、Mac OS Xだと何それ美味しいの状態なのでパスワードを解除しておく。 
 +<code> 
 +# mv server.key server.key.bak 
 +# openssl rsa -in server.key.bak -out server.key 
 +Enter pass phrase for server.key.bak: 
 +writing RSA key 
 +</code> 
 + 
 +==== subversion.confの編集==== 
 +subversion.conf.incにリネームし、''SSLRequireSSL''を追加する。 
 +<code> 
 +# mv subversion.conf subversion.conf.inc 
 +# emacs subversion.conf.inc 
 +<file> 
 +<IfModule dav_svn_module> 
 + 
 +<Location /svn-repos> 
 +    DAV svn 
 +    SVNListParentPath on 
 +    SVNParentPath /doko/soko/svn/repos 
 +    SSLRequireSSL                              # SSLを必須にする 
 +    Satisfy Any                                # 匿名ユーザーを許可 
 +    Require valid-user                         # 匿名ユーザーが許可されてない操作は正規ユーザーを要求 
 +    AuthType Basic                             # ベーシック認証を使う 
 +    AuthName "Subversion Authorization"        # 認証領域の設定。設定を忘れると500エラーで小一時間苦しむことになるので注意。 
 +    AuthUserFile /doko/soko/svn/htpasswd       # ベーシック認証のユーザーとパスワードファイル 
 +    AuthzSVNAccessFile /doko/soko/svn/authz    # リポジトリのアクセス制御情報ファイル 
 +</Location> 
 + 
 +</IfModule> 
 +</file> 
 +</code>
  
 ==== mod_sslの設定 ==== ==== mod_sslの設定 ====
 /etc/apache2/extra/にmod_ssl用の設定サンプルがあるのでコピーしておく。 /etc/apache2/extra/にmod_ssl用の設定サンプルがあるのでコピーしておく。
 +
 <code> <code>
-$ sudo cp ../extra/httpd-ssl.conf ./ssl.conf (/etc/apache2/otherがカレントとする) +$ cd /etc/apache2/other 
-$ sudo emacs ssl.conf+$ sudo cp ../extra/httpd-ssl.conf ./ssl.conf 
 +$ sudo mv subversion.conf subversion.conf.inc 
 +</code>
  
 +ssl.confで必要な箇所だけ抜粋。
  
-</code>+<file> 
 +SSLRandomSeed startup file:/dev/urandom 512 
 +SSLRandomSeed connect file:/dev/urandom 512
  
 +Listen 443
 +
 +AddType application/x-x509-ca-cert .crt
 +AddType application/x-pkcs7-crl    .crl
 +SSLPassPhraseDialog  builtin
 +SSLSessionCache        "shmcb:/private/var/run/ssl_scache(512000)"
 +SSLSessionCacheTimeout  300
 +SSLMutex  "file:/private/var/run/ssl_mutex"
 +
 +<VirtualHost *:443>
 +DocumentRoot "/Library/WebServer/Documents"
 +ServerName mysvn.info:443
 +ServerAdmin メールアドレス
 +ErrorLog "/private/var/log/apache2/error_log"
 +TransferLog "/private/var/log/apache2/access_log"
 +
 +SSLEngine on
 +SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 +SSLCertificateFile "/private/etc/apache2/other/server.crt"
 +SSLCertificateKeyFile "/private/etc/apache2/other/server.key"
 +
 +<FilesMatch "\.(cgi|shtml|phtml|php)$">
 +    SSLOptions +StdEnvVars
 +</FilesMatch>
 +<Directory "/Library/WebServer/CGI-Executables">
 +    SSLOptions +StdEnvVars
 +</Directory>
 +
 +BrowserMatch ".*MSIE.*" \
 +         nokeepalive ssl-unclean-shutdown \
 +         downgrade-1.0 force-response-1.0
 +
 +CustomLog "/private/var/log/apache2/ssl_request_log" \
 +          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 +
 +Include /private/etc/apache2/other/subversion.conf.inc
 +</VirtualHost>
 +</file>
 +
 +''&lt;VirtualHost&gt;''の最後でsubversion.conf.incを取り込んでSSL接続時にBasic認証を有効にするとともに、非SSL時はリポジトリにアクセス出来ないようにする。
  
 ===== 参考サイト ===== ===== 参考サイト =====
 +  * [[http://www.maruko2.com/mw/Apache/SSL%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8mod_ssl%E3%81%AE%E8%A8%AD%E5%AE%9A|Apache/SSL自己証明書の作成とmod sslの設定 - maruko2 Note.]]
 +  * [[http://www.makies.com/2008/03/44/|家XenでTracを使えるようにしたよ « わすれないように.]]
   * [[http://blog.livedoor.jp/knaka01/archives/51410971.html|酔いどれ日誌:Subversion + AuthzSVNAccessFile = Forbidden 403 Error]]   * [[http://blog.livedoor.jp/knaka01/archives/51410971.html|酔いどれ日誌:Subversion + AuthzSVNAccessFile = Forbidden 403 Error]]
   * [[http://www.caldron.jp/~nabetaro/svn/svnbook-1.5-final/html-chunk/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz.perdir.ex-1|第6章 サーバの設定httpd (Apache HTTP サーバ)]]   * [[http://www.caldron.jp/~nabetaro/svn/svnbook-1.5-final/html-chunk/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz.perdir.ex-1|第6章 サーバの設定httpd (Apache HTTP サーバ)]]
 +  * [[http://memo.kappa-lab.com/2007/06/svnwebdavssl.html|SVN+WebDAV+SSLをポートを分けて設定 (memo.kappa-lab.com)]]
 +  * [[http://kay.air-nifty.com/art/2008/09/sslbasic-77ec.html|SSL+Basic認証の設定で意外に苦労しました(技術的な話題): ITスペシャリストが語る芸術]]
 +
 +~~DISCUSSION~~
 +
  • mac/mac_os_x_v10.6でsubversionリポジトリのパスベース認証を行う.1298563387.txt.gz
  • 最終更新: 2011-02-25 01:03
  • by Decomo