目標:
visualsvn 移機
再加上修改密碼功能
環境:
ubuntu10
apache2.2
php5
Subversion
1.使用samba mount到 VisualSvn
mount.cifs //xx.xx.xx.xx/SvnRepository /usr/local/SvnRoot -o user=xxx,pass=xxx
2.安裝apache2
sudo apt-get install apache2 apache2-common apache2-utils apache2-doc
預設裝在
/etc/apache2/
/etc/apache2/apache2.conf
root
/var/www
3.安裝subversion
sudo apt-get install subversion libapache2-svn
4.設定環境, 使用apache2去管理Subversion
4.1 文件有提到要使用liunx的group去管理權限 (重要, 才能commit)
sudo addgroup subversion
sudo usermod -G subversion -a www-data
sudo chown -R root:subversion myproject
sudo chown -R www-data:www-data /var/local/svnroot
--> 授予 Apache(www-data) 使用者存取的權限
/etc/group
4.2 初始化一個repository
sudo svnadmin create /usr/local/SvnRoot
4.3 修改dav_svn.conf
sudo vi /etc/apache2/mods-available/dav_svn.conf
DAV svn
#SVNParentPath /mnt/SvnRepository
SVNParentPath /usr/local/SvnRoot
--> SVNPath指Subversion的檔案庫路徑,SVNParentPath指此路徑底下所有目錄
都會是Subversion檔案庫
AuthType Basic
AuthName "Agenda eSolution Java Dept Subversion repository"
AuthUserFile /etc/subversion/passwd
AuthzSVNAccessFile /etc/subversion/authz
Require valid-user
#SVNAutoversioning on
4.4 Subversion 設定文件路徑 /etc/subversion/
新增Subversion使用者
sudo htpasswd /etc/subversion/passwd todd (-c 會砍掉檔案重建)
新增Subversion權限
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=
Research Institute/CN=Joe Average
[groups]
testgroup=todd
[svn:/]
*=
[test:/]
@agenda= rw
todd2= rw
5.SSL
5.1 安裝
sudo apt-get install ssl-cert
5.2 Enable the SSL Apache module
sudo a2enmod ssl
/etc/apache2/ports.conf
應該要有
Listen 443
5.3 生成一個 SSL證書
mkdir /etc/apache2/ssl
sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
5.4 修改/etc/apache2/sites-available/default-ssl
改成產生的路徑
#SSLCertificateFile /etc/apache/ssl/apache.pem
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key ?
5.5 修改/etc/apache2/mods-available/dav_svn.conf
...
SSLRequireSSL --> 加入
5.6 這一步很重要
sudo a2ensite default-ssl
sudo /etc/init.d/apache2 restart
5.7 根憑證 (Root CA) 作法:
建立根憑證的 Private Key:
openssl genrsa -des3 -out RootCA.key 2048
密碼請來問我
產生根憑證的申請書:
openssl req -new -key RootCA.key -out RootCA.req
chmod og-rwx RootCA.key
使用根憑證本身簽髮根憑證:
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey RootCA.key
-in RootCA.req -out RootCA.crt
rm -f RootCA.req
5.8 伺服器憑證作法:
建立伺服器憑證的 Private Key:
openssl genrsa -out HostCA.key 2048
產生伺服器憑證的申請書
openssl req -new -key HostCA.key -out HostCA.req
chmod og-rwx HostCA.key
tip: 在填申請伺服器憑證申請書時 (Common Name) 要填上主機的全名,
不然用client去連subversion時會出現
server certificate was missing commonName attribute in subject name的錯誤
使用根憑證簽發伺服器憑證
openssl x509 -req -days 365 -sha1 -extensions v3_req -CA RootCA.crt
-CAkey RootCA.key -CAserial RootCA.srl -CAcreateserial -in HostCA.req
-out HostCA.crt
rm -f HostCA.req
5.9 修改 vi /etc/apache2/sites-available/default-ssl
SSLCertificateFile /etc/apache2/ssl/RootCA.crt
SSLCertificateKeyFile /etc/apache2/ssl/RootCA.key
tip: 這裡認證的檔案是使用 RootCA的,
我之前打了HostCA, 會出現
svn: OPTIONS of 'https://xxxx.xxxx.xxxx.xxxx/svn/xxxx':
SSL handshake failed: \ SSL error code 01 的錯誤
6.新增修改帳密的 passwd.php
5.1.安裝php5
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5
5.2.新增 /var/www/passwd.php
5.3.修改 /etc/apache2/mods-available/dav_svn.conf, 目的是使用apache來做驗證
在apache增加一個Alias, 設定該路徑需要認證, 指定認證的文件為 Subversion
Alias /svntools "/var/www/"
Require valid-user
# how to authenticate a user
AuthType Basic
AuthName "Subversion Tools"
AuthUserFile /etc/subversion/passwd
5.4.修改權限
chmod 777 /etc/subversion/passwd
最後 restart server時, 會要打上CA憑證的密碼 --> 這裡可以再改成起動時就設, 這部份未處理
修改 httpd.conf 加入 ServerName xxxx.xxxx.xxxx.xxxx
7.改成對外
將原本 VisualSVN Server導到 xx.xx.xx.xx:443
所以修改 VisualSVN Server\conf\httpd.conf
7.1 要打開 #LoadModule ssl_module bin/mod_ssl.so
SSLProxyEngine on
proxyPass xxx
ProxyPassReverse xxx
0 意見:
張貼留言