posts - 67,  comments - 297,  trackbacks - 15
公告

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

posted on 2008-01-06 23:03 Zealic 阅读(...) 评论(...) 编辑 收藏