zoukankan      html  css  js  c++  java
  • windows下配置svn的https访问

    svn是一个功能强大的代码版本管理系统,可以将服务端安装在linux、unix以及windows下。svn通常采用http方式进行代码提交与下载。由于密码采用明文传输,因此存在泄密的风险。若采用https协议加密,则可大大提高安全性能。

    在windows下配置基于apache的svn,带openssl0.9.8。可通过http或者https访问,或者只能通过https访问。部分资料从网上摘录,经过本人测试后,对部分内容进行了补充。

    一、下载和安装

     (一)下载

     1、下载apache,在此我下载的是apache-2.2.11-win32-x86-openssl-0.9.8,该版本的apache自带了openssl。(2013年11月最新版已经更新到2.4.6)

     2、下载subversion,在此配置文档里我用的是1.6.4。可在官网上下载。

      

    (二)安装 

    安装apache和subversion; 

    注:如果安装完apache之后出了no services installed的情况,请在cmd里进入到apache的bin目录,然后运行httpd.exe -k install -n apache2  即可。apache2根据自己apache的版本改变。 

     二、建配置库及用户名。 

    1、建配置库

     在cmd命令里进入subversion的bin目录,然后输入

    svnadmin create d:svn est 

    注:上层目录d:svn est必须存在。即在d盘下建svn est文件夹。 

    运行此命令即建好一个库。打开之后可看到test空文件中多了下图所示的那些文件。 

    2、建用户名。 

    将apache设为环境变量,然后在cmd命令里进入apachein目录,执行以下命令即可。 

    初次建用户名:htpasswd  -c  [验证文件名] username

    username对应我们的用户名,然后输入密码即可。 

    增加用户名:htpasswd  -m  [验证文件名] username 

    删除用户:      htpasswd  -D  passwd  username       注:此处必须用大写的D。

    三、配置过程

    在此为止,我们已经将客户端及服务器端的软件都安装好了,接下来就是配置过程了。

    (一)配置可以通过http访问

    1、打开subversion的bin目录,将下图所示的三个文件复制到apache的modules目录下。(因为apache本身不包含dav_svn.so和authz_svn.so模块。

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

    2、因为apache和subversion的版本不对应,所以应将subversion的bin目录中的所有的dll文件复制到apache的bin目录里,在复制的过程中,要让apache停止。

    3、打开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:svnpasswd"     #用户名及密码的存放路径,据自己的情况写。

         AuthzSVNAccessFile "D:svnsvnaccessfile"      #权限文件的存放路     径,据自己的情况写。

         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文件进行修改。       

    1、将以下三行的注释去掉,即去掉#。

            #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

    2、将以下行前面的注释去掉 

    #Include conf/extra/httpd-ssl.conf 

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

    3、如果希望只通过https访问,则应该前面Location部分的#SSLRequireSSL前面的#去掉。没有去掉的话是https和http形式都可以访问。 

    4、申请证书 

    在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三个文件。

    四、分配权限 

    在此文档我将权限文件命名为svnaccessfile,在其中添加权限内容。 

    内容如下: 

    [groups]

    admin = username

    dev =

    ......                                               #对应我们所需要的组。

    [/]                                               #设置哪些组或用户可以查看库目录(所有的库的一个列表)

     @admin=r                                

    [test:/]                                             #给库设置访问权限。

    @admin =rw

    @dev=r 

    [test:/xx/xx]                                        #继续细分库的权限。

    @admin = rw

    到此为止,所有的配置都已经完成,我们可以通过客户端进行日常工作了。

  • 相关阅读:
    【转】使用Javascript改变HTML内容 拓荒者
    【转】ASP.NET MVC 过滤器Filter 拓荒者
    【转】JavaScript简介 拓荒者
    edge.js架起node.js和.net互操作桥梁
    利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm
    nodejs上HTML分析利器nodejquery
    JavaScript 函数replace揭秘
    利用Node.js本地构建
    Angularjs的IOC Inject分析
    团队文化中的害群之马
  • 原文地址:https://www.cnblogs.com/imzdh/p/3439857.html
Copyright © 2011-2022 走看看