http://xinsync.xju.edu.cn/index.php/archives/1628#more-1628
为Subversion搭建基于SSL的 Apache服务器
本文来源于 冰山上的播客 http://xinsync.xju.edu.cn , 原文地址:http://xinsync.xju.edu.cn/index.php/archives/1628
利用Subversion创建的仓库可以借助apche发布出去,让更多的开发人员访问;借助apache自身的用户管理,我们可以为Subversion进行用户和权限管理,使得只有相应权限的人才能访问我们资源;此外,为了更加安全,我们可以借助apache对于SSL的支持,使得开发人通过https访问仓库资源。下面分别介绍之。
1 需要准备的程序
Apache
可以到官方网站上下载:http://httpd.apache.org/download.cgi
注意:
不是版本越高越好,只有2.0系列的支持;
如果要搭建基于SSL的服务器,最好安装集成了openssl的版本;
作者使用版本:apache_2.0.59-win32-x86-openssl-0.9.7j.msi
Subversion
2安装软件
注意:
1)
要先安装Apache,再安装Subversion,这样subversion会自动为我们拷贝一些modules到apache中,避免了手动拷贝。
2)
在安装subversion时,在一个面版中要选择Apache modules,如下图:
3) 若apache安装成功,可以在浏览器中访问之: http://localhost.;
4)
若subversion安装成功可以在命令行中输入svn version察看版本信息. 现在就可以利用subversion创建仓库, 具体的使用办法可以参阅相关文档.
3
配置apache, 发布仓库资源.
打开apche配置文件夹下的httpd.conf文件(在… \apache\Apache2\conf下):
在其中添加如下代码:
<Location /svn>
DAV svn
#give the repository path
SVNPath /absolute/path/to/repository
# allow all access
Satisfy Any
</Location>
好了, 重启apache,我们就可以通过浏览器察看或subversion等工具访问仓库资源了。你可以打开浏览器输入: http://localhost/svn 。体验下成功的喜悦吧。
介绍下,各个的作用
<Location /svn>
中的svn就是我们要输入的地址;
SVNPath给出了仓库的位置,为绝对地址;
Satisfy Any表示允许任何人访问。
现在,现在还有些不完备,比如我们可能要求只有注册的用户才能访问,不同的用户访问具有访问不同文件权限。这个的实现有多种方式,apache自身就提供了用户和权限管理的功能;此外,为了更好的进行用户管理,我们可以借助数据库,常用的有开源的MySQL。在此,我们介绍apache自带的管理。
4
创建用户
Apache的 ..\apache\Apache2\bin文件下自带的程序:htpasswd.exe 即可完成用户创建。
C:\Apache Group\Apache2\bin>htpasswd –cm /path/to/passwd/fileName admin
好了,这样就在指定的路径处创建了一个指定名字的用户文件,并创建了一个用户名admin。其中c表示要创建新的文件,m表示要创建账户。这时候,会提示输入密码,并要求验证:
New password: *****
Re-type new password: *****
Adding password for user admin
好了,一个账号建好了。可以接着建用户:
C:\Apache Group\Apache2\bin>htpasswd –m /path/to/passwd/fileName kevinl
New password: ******
Re-type new password: ******
Adding password for user kevinl
注意,因为第一次已经创建了文件,此处只需要-m 即可,不需要c了。
Ok,现在用户文件建好了。打开apache的httpd.conf文件,将<Location /svn>…< Location>改为:
<Location /svn>
DAV svn
#give the repository path
SVNPath /absolute/path/to/repository
AuthType Basic
AuthName “Xi’an server of NA mirror”
AuthUserFile /path/to/passwd/fileName
Require valid-user
</Location>
好了,重启apache,访问,看是不是要输入密码了.如果我们还要求对各个用户对具体文件的权限管理的话,就进行下面的权限管理。
5 权限管理
这同样需要一个权限管理文件。首先在httpd.conf中指定这个文件.
AuthzSVNAccessFile / path/to/auth_access_police_file
下面我们来讨论如何写权限管理文件.
这之中权限有三个等级:读写,读,无,分别为(rw, r, 空)
权限文件中以空行分开多个单位。每个单位定义对一个文件的权限管理。此外,为了方便管理我们可以将用户分组。分组用一个单位,一般位于文件的前面。如下:
[groups]
calc-developers = harry, sally, joe
paint-developers = frank, sally, jane
admin = joe, frank, sally, jane
形式如下:
[calc:/trunk/]
harry = rw
sally = r
@=rw
设置calc工程中/trunk的权限.其中harry对其有读和写权限,sally有读的权限,组admin有读写权限(注意,组名前面有一个@符号).
上面定义针对多个库的情况,若只有一个可写为:
[ /trunk/]
harry = rw
sally = r
若要设置所有用户对根目录的权限,为:
[/]
*=r
权限管理的工作原理:默认情况下对所有文件夹是有读写权限的;对于父文件的权限会被子文件夹和文件继承;对于子文件权限的定义会覆盖由父文件继承来的权限 规则。当某用户访问某一文件夹时,首先会寻找是否对此文件夹下此用户进行了设置,若设置了就采用该规则;否则,就找他的父文件夹,若还是没有对该文件夹定 义,则继续向上。直到根目录。若仍没有,就采用默认。
Ok。如果我们向增加安全性,可以让apache采取SSL方式发布,需要两步,首先是制作证书,然后是配置管理文件.
6 制作证书.
有两种方式,使用openssl和使用第三方工具opesnVPN.
A 使用openssl。
你需要准备openssl.exe和openssl.cnf。
openssl.exe在..\apache\Apache2\bin下(注意只有支持SSL的apache安装后才有,也可下载http://hunter.campbus.com/);openssl.cnf下载http://tud.at/programm/openssl.cnf并拷贝到..\apache\Apache2\bin下.
好了,开始制作了,在命令行下定位到..\apache\Apache2\bin,运行:
$openssl req -config openssl.cnf -new -out active.csr
然后回答相关问题来制作一个证书active.csr.这个证书实际就是一个用公私密钥加密的文本文件,它需要被第三方机构授权.
$openssl rsa -in privkey.pem -out active.key
得到密钥.
$openssl x509 -in active.csr -out active.cert -req -signkey active.key -days 4000
得到使用密钥加密了的证书,有效期为4000天.
$openssl x509 -in active.cert -out active.der.crt -outform DER
Der形式的证书。
好了,现在,我们有文件:
l active.der.crt(certificate of DER style)
l active.csr
l active.key(private key)
l .rnd,
l privkey.pem
l active.cert(certificate of PEM style)
7 配置文件
把文件active.der.crt和active.key拷贝到..\Apache Group\Apache2\conf\ssl
打开文件httpd.cnf,将下面行前的注释去掉:
LoadModule ssl_module modules/mod_ssl.so
打开文件..\Apache Group\Apache2\conf\ssl.cnf,确保以下行是没有注释掉的.
DocumentRoot “../Apache Group/Apache2/htdocs”
ServerName www.active.com:443
ServerAdmin eric.du@active.com
ErrorLog logs/error_log
TransferLog logs/access_log
SSLMutex default
SSLRandomSeed startup builtin
SSLSessionCache none
(SSLSessionCache确保其他行是注释的)
做以下两个更改:
SSLCertificateFile conf/ssl.crt/server.crt
-à SSLCertificateFile conf/ssl/active.der.crt
SSLCertificateKeyFile conf/ssl.key/server.key
–> SSLCertificateKeyFile conf/ssl/active.key
去掉或注释以下两行:
<IfDefine SSL>
</IfDefine>
好了,重启apache,测试访问:https://localhost和https://localhost/svn.
现在我们可以通过http和https两种方式访问.如果我们强制要求使用https或对http自动重定向为https.就需要参考下面:
8 强制SSL和自动重定向
打开httpd.conf,进行配置.
如果只是要求subversion库使用此策略,则就将下面的命令放在<Location /svn>…< Location>中,若是整个apache,则放在<Directory />…</Directory>中.
1) 强制
SSLRequireSSL
2) 自动重定向
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^172\.31\.224\.[0-9]+$
RewriteCond %{HTTPS} !on [NC]
RewriteRule .* - [F]
本文来源于 冰山上的播客 http://xinsync.xju.edu.cn , 原文地址:http://xinsync.xju.edu.cn/index.php/archives/1628
分享到:
相关推荐
《基于Apache的Subversion服务器配置详解》 ...配置完成后,重启Apache服务器,Subversion服务器即告成功搭建。通过上述步骤,开发者可以建立一个高效、安全的Subversion环境,促进团队间的协同开发和版本管理。
### 用 Apache 和 Subversion 搭建安全的版本控制环境 #### Subversion 简介 Subversion 是一种开源版本控制系统,它以其强大的特性和灵活性,在开源软件开发领域获得了广泛的认可。相比于早期流行的版本控制系统 ...
SVN客户端(如TortoiseSVN或命令行工具)需要配置指向Apache服务器的URL,以HTTPS方式连接。 整个过程中,需要注意的是安全设置,包括SSL证书的正确配置、用户权限的合理分配以及防火墙设置允许SVN端口(通常是443...
本教程将详述如何在Windows环境下搭建基于Apache服务器的Subversion(SVN)服务端,帮助你实现代码的集中式管理。 首先,我们需要了解SVN的基本概念。Subversion是一个开源的版本控制系统,它允许开发者跟踪并管理...
1. **Apache服务器安装**:在安装过程中,可能出现80端口被占用的错误,此时需修改`httpd.conf`文件中的监听端口号,例如改为8080。重启Apache后,通过浏览器访问`http://localhost:8080`确认Apache运行正常。 2. **...
在Apache服务器上部署Subversion,可以通过DAV(WebDAV)协议提供对版本库的访问。这通常涉及到配置Apache的httpd.conf文件,添加SVN模块,如mod_dav_svn,并设置必要的路径和权限。 接下来,Jsvnadmin是一个基于...
通过以上步骤,你可以搭建起一个基于 Subversion、Apache 和 TortoiseSVN 的版本控制系统,为团队协作提供便捷的代码版本管理。在实际应用中,可能还需要根据项目需求进行更详细的权限设置和日志管理。
首先需要安装Apache服务器,以便为SVN提供HTTP访问接口。这里以`apache_2.0.55-win32-x86-no_ssl.msi`为例进行介绍: 1. **安装配置**: - 运行安装程序`apache_2.0.55-win32-x86-no_ssl.msi`。 - 在安装过程中,...
Linux环境下搭建SVN(Subversion)服务器,特别是使用Apache作为前端服务器,是一项常见的任务,尤其在团队协作开发中。以下是基于Linux(如Redhat 5)搭建SVN服务器的步骤,主要涉及apr、apr-util、zlib等库的安装...
【Ubuntu+svn+ssl+ldap】的安装及集成是一个复杂的过程,涉及到Ubuntu操作系统、Subversion (SVN) 版本控制系统、SSL安全套接层以及Lightweight Directory Access Protocol (LDAP) 用户认证。以下是对这些技术的详细...
"Subversion + Apache" 是一个常见的版本控制系统与网络服务器的组合,用于管理和协作软件开发项目。Subversion(SVN)是开源的版本控制系统,而Apache是广泛应用的HTTP服务器,它们结合可以提供高效、安全的代码...
Collabnet Subversion Edge 是一款集成了 Apache 和 ViewVC 的 SVN 服务器解决方案,具有安装简便、管理便捷的特点。它不仅内置了必要的组件,还提供了图形化的管理界面,极大地简化了配置过程。 #### 三、Trac介绍...
通过以上步骤,可以成功地在Linux系统上搭建Subversion服务器,并使用TortoiseSVN客户端进行日常的版本控制工作。Subversion提供了高效、灵活的版本管理功能,能够有效地帮助团队协作和项目管理。
在选择使用 Apache 作为 Subversion(SVN)服务器管理工具时,主要基于以下几点考虑: 1. **服务器管理**: 使用 Apache 可以更方便地进行服务器的启动、重启和关闭操作。 2. **安全性**: Apache 在传输用户名和密码...
保存配置后,启动Apache服务器。现在,你可以通过HTTP访问SVN仓库了,如`http://localhost/svn`。 6. **客户端配置**: 使用SVN客户端(如TortoiseSVN)连接到你的本地服务器。在“URL of the repository”字段中...
【安装Apache服务器】 通过新立得软件包管理器搜索并安装Apache2和libapache2-svn。安装完毕后,访问http://192.168.19.3,如果显示Apache的欢迎页面,则表明Apache已经正确安装并运行。 【创建SVN服务器】 4.1 ...
启动Apache服务器,检查是否成功运行: ``` /usr/local/apache2/bin/apachectl start ps -ef | grep apache ``` 如果Apache安装成功,浏览器访问服务器IP应该会显示"It Works!"。 如果在配置Dav模块时遇到问题,...
本文将详细介绍基于 Apache 服务器的 Subversion 安装与配置过程,Subversion 是管理工程本版的必备工具,对比 vss 及其前身 cvs 都有着无与伦比的优势。 一、安装 svn 依赖包 在安装 svn 之前,需要安装相关依赖...
描述:本文详细描述了 Ubuntu 环境下,SVN Apache SSL 架构的 SVN 服务器的搭建过程。 标签:cs 部分内容: ### 概述 本文将详细介绍 Ubuntu 环境下搭建 SVN 服务器的过程,包括安装 Ubuntu 服务器、安装 Apache...