Trac 手记(二) : 安全配置


  上篇文章 完成了使 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

    下载集成 OpenSSL 的 Apache 并安装。

  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
/>

DAV svn
SVNParentPath "G:/ALM/SVN"
SVNListParentPath On
AuthzSVNAccessFile "G:/ALM/Authz/SVN.acp"

SSLRequireSSL
AuthType Basic
AuthName "Authorization realm"
AuthUserFile "G:/ALM/Authz/Users.acp"
Require valid-user
</ Location >

    上面配置中的 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
>

AuthType Basic
AuthName "Trac login"
AuthUserFile G:/ALM/Authz/Users.acp
Require valid-user
</ Location >

     配置和 SVN 相同的帐号。

   3.2) 使用 HTTPS 验证登录

       明文 HTTP 协议易泄密,因此还需要为登录的 URL 设定为 HTTPS 协议登录。

       取消 httpd.conf 中的以下模块的注释,以启用重定向:

LoadModule rewrite_module modules/mod_rewrite.so

       在 httpd.conf 末尾加入以下代码,用以将登录重定向到 HTTPS:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(/trac/login)$ https://%{SERVER_NAME}$1 [L,R]

       在 ssl.conf 的以下代码:

</
VirtualHost
>

      修改为:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^8080$
RewriteRule !^(/trac/login)$ http://%{SERVER_NAME}:8080$1 [L,R]
</ VirtualHost >

     上述配置的作用为,当请求登录 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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值