windows下配置svn的https訪問

svn是一個功能強大的代碼版本管理系統,能夠將服務端安裝在linux、unix以及windows下。svn一般採用http方式進行代碼提交與下載。因爲密碼採用明文傳輸,所以存在泄密的風險。若採用https協議加密,則可大大提升安全性能。linux

 

在windows下配置基於apache的svn,帶openssl0.9.8。可經過http或者https訪問,或者只能經過https訪問。部分資料從網上摘錄,通過本人測試後,對部份內容進行了補充。apache

 

1、下載和安裝windows

 (一)下載安全

 

 一、下載apache,在此我下載的是apache-2.2.11-win32-x86-openssl-0.9.8,該版本的apache自帶了openssl。(2013年11月最新版已經更新到2.4.6)服務器

 二、下載subversion,在此配置文檔裏我用的是1.6.4。可在官網上下載。svn

  

(二)安裝 性能

安裝apache和subversion; 測試

注:若是安裝完apache以後出了no services installed的狀況,請在cmd裏進入到apache的bin目錄,而後運行httpd.exe -k install -n apache2  便可。apache2根據本身apache的版本改變。 ui

 2、建配置庫及用戶名。 加密

1、建配置庫

 在cmd命令裏進入subversion的bin目錄,而後輸入

svnadmin create d:\svn\test 

注:上層目錄d:\svn\test必須存在。即在d盤下建svn\test文件夾。 

運行此命令即建好一個庫。打開以後可看到test空文件中多了下圖所示的那些文件。 

2、建用戶名。 

將apache設爲環境變量,而後在cmd命令裏進入apache\bin目錄,執行如下命令便可。 

初次建用戶名:htpasswd  -c  [驗證文件名] username

username對應咱們的用戶名,而後輸入密碼便可。 

增長用戶名:htpasswd  -m  [驗證文件名] username 

刪除用戶:      htpasswd  -D  passwd  username       注:此處必須用大寫的D。

 

3、配置過程

 

在此爲止,咱們已經將客戶端及服務器端的軟件都安裝好了,接下來就是配置過程了。

 

(一)配置能夠經過http訪問

 

一、打開subversion的bin目錄,將下圖所示的三個文件複製到apache的modules目錄下。(由於apache自己不包含dav_svn.so和authz_svn.so模塊。

  注:若是apache的版本不是2.2.11,libdb44.dll的名字可能就是libdb**.dll。

二、由於apache和subversion的版本不對應,因此應將subversion的bin目錄中的全部的dll文件複製到apache的bin目錄裏,在複製的過程當中,要讓apache中止。

 

三、打開apache的conf目錄裏的httpd.conf文件進行修改。

(1)在LoadModule部分,首先將如下兩行前面的#去掉。

       #LoadModule dav_module modules/mod_dav.so

       #LoadModule dav_fs_module modules/mod_dav_fs.so 

 

 (2) 在LoadModule部分添加如下兩句,由於咱們前面只是將subversion中的dav_svn.so和authz_svn.so模塊複製到apache的modules目錄下,可是apache啓動後並不會加載它,因此咱們添加如下兩句,以便讓apache會加載這兩個模塊。 

        LoadModule dav_svn_module modules/mod_dav_svn.so

        LoadModule authz_svn_module modules/mod_authz_svn.so 

 

(3)在httpd.conf文件的最後添加如下內容 

<Location /repos>                                 

     DAV svn

     SVNParentPath "d:\svn"           # 庫的路徑。

     SVNListParentPath on              # 查看全部的庫(即庫列表)

     AuthType Basic    

     #SSLRequireSSL     #限制項目倉庫只能經過https的形式進行訪問,若只採用https訪問,則去掉#

     AuthName "svn repos"

     AuthUserFile "D:\svn\passwd"     #用戶名及密碼的存放路徑,據本身的狀況寫。

     AuthzSVNAccessFile "D:\svn\svnaccessfile"      #權限文件的存放路     徑,據本身的狀況寫。

     Require valid-user

</Location>

 

到此爲止經過http訪問的全部的配置都已經完成。給用戶權限便可經過http://ip:port/repos/test進行訪問。

 

注: (1)ip:服務器的IP。

          port:安裝apache時咱們選擇的端口。

          repos:location後面的部分,根據本身的實際狀況填寫。

          test:庫的名稱。

     (2)在配置文件httpd.conf中添加內容時必定要注意在英文狀態下輸   入,不然會致使apache啓動不了;另外上面#及#後內容必定要去掉。

 

(二)經過https訪問或者只能經過https訪問

 

打開apache的conf目錄裏的httpd.conf文件進行修改。       

一、將如下三行的註釋去掉,即去掉#。

        #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so

        #LoadModule ldap_module modules/mod_ldap.so

        #LoadModule ssl_module modules/mod_ssl.so

 

#注:系統缺乏文件mod_ssl.so,須要從網上下載並複製到modules目錄,不然沒法啓動apache服務 下載mod_ssl.so

 

二、將如下行前面的註釋去掉 

#Include conf/extra/httpd-ssl.conf 

改成Include conf/extra/httpd-ssl.conf 

 

三、若是但願只經過https訪問,則應該前面Location部分的#SSLRequireSSL前面的#去掉。沒有去掉的話是https和http形式均可以訪問。 

 

四、申請證書 

在cmd命令進入到apache的conf目錄,執行如下命令。 

openssl genrsa -out server.key 1024                          #生成密鑰 

openssl req -new -key server.key -out server.csr -config .\openssl.cnf                 #生成server.csr,此處須要從互聯網下載openssl.conf文件,更名爲openssl.cnf 

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt                  #生成證書

 

生成證書時365是證書的有效期,可根據本身的狀況進行填寫。以上命令執行完以後會生成server.key ,server.csr,server.crt三個文件。

 

4、分配權限 

在此文檔我將權限文件命名爲svnaccessfile,在其中添加權限內容。 

內容以下: 

[groups]

admin = username

dev =

......                                               #對應咱們所須要的組。

 

[/]                                               #設置哪些組或用戶能夠查看庫目錄(全部的庫的一個列表)

 @admin=r                                

[test:/]                                             #給庫設置訪問權限。

@admin =rw

@dev=r 

[test:/xx/xx]                                        #繼續細分庫的權限。

@admin = rw

 

到此爲止,全部的配置都已經完成,咱們能夠經過客戶端進行平常工做了。

相關文章
相關標籤/搜索