上篇文章 完成了使 Subversion 和 Trac 接入 Apache 的方法,如果是个人使用 Trac 的话,只需要再配下 trac 的账户就可以使用。
但是如果是团队使用的话,无论是本地局域网或者公共网络,直接访问 SVN 仓库或 Trac 都是不安全的,如果所处的网络处于被监控状态,任何提交的信息都可能被捕获到,这就是为什么有 HTTPS 的原因。
因此,在进一步深入 Trac 之前,我们必须先谈谈配置安全的、基于 Apache 的 Subversion 和 Trac 构建的ALM (Application Lifecycle Management) 系统。
在开始之前,如果您没有看过我的上一篇文章 :Trac 手记(一) : Windows 下安装 Trac ,请务必先看一下。
1) 配置基于 SSL 的 Apache
众所周知,HTTP 所有的内容基本都是明文传输的,这就为病毒、盗号等网络黑暗提供了方便。许多人也许都见过,在登录到某个网站时浏览器总会有以下提示:
就是提醒用户进入了 HTTPS 安全连接,这种情况下通常信息不会泄漏。
本节的目标就是配置 Apache 使用 SSL,使得在实施 Trac 和 SVN 时,避免别有用心者通过捕获数据包来获得不属于自己的账户,从而实施破坏。
1.1) 安装 Apache with OpenSSL
1.2) 创建安全证书
在 D:/Apache/bin 目录运行以下命令:
按照提示填写内容,该命令生成一个未签名的证书:包含 server.csr、 privkey.pem 文件。
openssl req -config ../conf/openssl.cnf -new -out server.csr |
然后生成私匙:server.key
openssl rsa -in privkey.pem -out server.key |
对证书进行签名:
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 9999 |
最后删除 .rnd、privkey.pem,保存 server.csr 到安全的地方或直接删除。
把剩下的 server.crt、server.key 复制到 D:/Apache/conf 目录。
1.3) 配置Apache SSL
复制 D:/Apache/conf/extra/httpd-ssl.conf 到 D:/Apache/conf/ssl.conf
修改:
SSLMutex "file:D:/Apache/logs/ssl_mutex" |
为:
SSLMutex default |
修改:
<VirtualHost _default_:443> |
为:
<VirtualHost *:443> |
根据需要,可能还需要修改 : SSLCertificateFile 和 SSLCertificateKeyFile,分别代表上面描述的 server.crt 和 server.key 的路径。
修改 httpd.conf 加载以 SSL 模块 :
LoadModule ssl_module modules/mod_ssl.so |
在 httpd.conf 的末尾加上一句 :
Include "conf/ssl.conf" |
启动 Apache,如果启动成功,访问页面无问题,则代表成功。
值得注意的问题 :
在配置 Apache 的过程中,我碰到了总是无法启动 Apache 的问题,经过检查发现是 QQ 占用 443 端口。
所以,如果你在配置过程中发现 Apache 无法启动,用 netstat 命令或其它工具(IceSword、TcpViewer等)检查下端口占用状态,如果 443 被 QQ 之类的软件的占用掉,就用华南虎头铡把它喀嚓掉。
2) Subversion 安全配置
类似上节所述,更改 SVN 的访问控制如下:
< Location /svn /> |
上面配置中的 SVN.acp 文件格式和 Subversion 配置的 /repos/conf/authz 文件格式相同,用以管理用户分组和访问权限。
而 Users.acp 则是由 D:/Apache/bin/htpasswd.exe 创建的,供 Trac 和SVN 使用,实现用户间的互通。
由此,整个 SVN 库的访问都必须通过 https ,具有极高的安全性。
3) Trac 安全配置
Trac 已经为我们准备好验证用户所需的大多东西,我们只需要配置登录机制即可。
3.1) 安全配置
< Location /trac /login > |
配置和 SVN 相同的帐号。
3.2) 使用 HTTPS 验证登录
明文 HTTP 协议易泄密,因此还需要为登录的 URL 设定为 HTTPS 协议登录。
取消 httpd.conf 中的以下模块的注释,以启用重定向:
LoadModule rewrite_module modules/mod_rewrite.so |
在 httpd.conf 末尾加入以下代码,用以将登录重定向到 HTTPS:
RewriteEngine On |
在 ssl.conf 的以下代码:
</ VirtualHost > |
修改为:
RewriteEngine On |
上述配置的作用为,当请求登录 trac 时,重定向到 HTTPS,对于任何非登录 trac 的url,重定向为 HTTP。
4) 结束语
至此,该 Trac 系统基本安装完成,不过目前依然不够,在下一节,我会介绍 Trac 系统中的一些基本概念以及如何进行Trac 的权限管理。
警告 : 本文所使用的是 Trac 0.11b1 版,不保证对文章内容对其他版本适用。
同样也不推荐你在实际环境部署使用该beta版,如出现任何问题,概与本人无关。
如果你存在任何有关问题,请 mail 我 : rszealic{at}gmail.com
版权 : 保留对本文的一切修改、发布等权力。任何人想要转载本文部分或全部内容时,必须保留包括作者 Zealic、出处、版权,共三项信息。对本文的参考引用,则不受限制。
5) 参考
Apache Mod_rewrite:
http://www.uplinux.com/download/doc/apache/ApacheManual/mod/mod_rewrite.html#rewritemap
Window下Apache2 SSL安装步骤:
http://tech.163dz.com/php/sslconfig.html
http://bbs.iusesvn.com/thread-158-1-1.html
http://bbs.iusesvn.com/viewthread.php?tid=1650&statsdata=13||1700
Subversion配置安装教程(三)
http://www.cnblogs.com/Java_Aix/archive/2005/02/10/103717.html
Windows下架设Subversion服务器
http://indian.blog.163.com/blog/static/10881582007112415021751/