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

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
mac:mac_os_x_v10.6でsubversionリポジトリのパスベース認証を行う [2011-02-20 01:30]
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
 * = * =
 +</file>
 +
 +===== SSLの設定 =====
 +ここからSSLに関する設定。HTTPのままで良ければ以下は設定する必要はない。
 +
 +==== 秘密鍵の生成 ====
 +sudoだと上手く行かなかったのでsuする。
 +<code>
 +$ cd /etc/apache2/other
 +$ su
 +# openssl genrsa -aes256 2048 > server.key
 +Generating RSA private key, 2048 bit long modulus
 +..................................................................................................+++
 +..............+++
 +e is 65537 (0x10001)
 +Enter pass phrase:
 +Verifying - Enter pass phrase:
 </code> </code>
  
-==== 参考サイト ====+==== 公開鍵の生成 ==== 
 +<code> 
 +# openssl req -new -key server.key >server.csr  
 +Enter pass phrase for server.key: 
 +You are about to be asked to enter information that will be incorporated 
 +into your certificate request. 
 +What you are about to enter is what is called a Distinguished Name or a DN. 
 +There are quite a few fields but you can leave some blank 
 +For some fields there will be a default value, 
 +If you enter '.', the field will be left blank. 
 +----- 
 +Country Name (2 letter code) [AU]:JP 
 +State or Province Name (full name) [Some-State]:Kanagawa 
 +Locality Name (eg, city) []:Yokohama-shi 
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:PRODUCTION KusoGA 
 +Organizational Unit Name (eg, section) []:CA 
 +Common Name (eg, YOUR name) []:ホスト名 
 +Email Address []:メールアドレス 
 + 
 +Please enter the following 'extra' attributes 
 +to be sent with your certificate request 
 +A challenge password []: 空白          
 +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の設定 ==== 
 +/etc/apache2/extra/にmod_ssl用の設定サンプルがあるのでコピーしておく。 
 + 
 +<code> 
 +$ cd /etc/apache2/other 
 +$ sudo cp ../extra/httpd-ssl.conf ./ssl.conf 
 +$ sudo mv subversion.conf subversion.conf.inc 
 +</code> 
 + 
 +ssl.confで必要な箇所だけ抜粋。 
 + 
 +<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リポジトリのパスベース認証を行う.1298133058.txt.gz
  • 最終更新: 2011-02-20 01:30
  • by Decomo