天天看点

Apache2/SSL+Subversion+PAM认证服务器配置

概要:服务器使用 apache2+ssl+svn+auth_pam 构建,具有如下特点:

    * 建立在 debian/apache2 的基础上

    * subversion 1.1

    * mod_dav_svn 使得 subversion 可以通过web访问

    * 使用 openssl 保障系统的安全性

    * 使用 mod_pam 和 mod_sys_group,使用系统的用户名密码来验证用户

目录

====

1 安装软件

2 配置 apache2/SSL

3 配置 apache2/SVN

4 配置 PAM

5 总结

安装软件

========

如果你和我一样用 Debian 的话,只要安装这几个包就可以了:

 apache2

 apache2-common

 apache2-mpm-prefork

 apache2-utils

 libapache2-svn

 libapache2-mod-auth-pam

 libapache2-mod-auth-sys-group

 subversion

 subversion-tools

openssl 会根据依赖性自动被安装,如果你有要移植到 subversion 的 CVS 项目,

可以安装

 cvs2svn

可以轻松转换,不过这个不在本文讨论范围内,略了。安装这几个之后就可以开始

了。

配置 apache2/SSL

================

如果你不用 ssl 保障安全的话,跳过这部分就可以了,基本上不妨碍完整性(实际

上还是差一点的)。首先生成一个 SSL 签名,使用命令

 # apache2-ssl-certificate

这里会有一系列关于你的个人隐私的问题,回答完了,自然的签名也就生成了,然

后我们就要在 apache2 里面打开 SSL 了,现在要做的是开启 ssl 模块

 # a2enmod ssl

然后,使用 apache2 的虚拟主机功能来添加 SSL 的支持,将

 /etc/apache2/sites-available/default

复制一份,叫

 /etc/apache2/sites-available/ssl

好啦

修改 default 文件的开头为

 NameVirtualHost *:80

 <VirtualHost *:80>

修改 ssl 文件的开头为

 NameVirtualHost *:443

 <VirtualHost *:443>

这里 443 是 SSL 的标准端口。

并在 ssl 文件中加入如下内容

 SSLEngine On

 SSLCertificateFile /etc/apache2/ssl/apache.pem

保存文件后,运行命令

   # a2ensite ssl

来激活这个虚拟主机

现在,修改文件

 /etc/apache2/ports.conf

加上一行

 Listen 443

好了,到此为止,SSL 服务器配置完成,重新启动 apache 吧。执行

 # apache2ctrl -k restart

就可以了

配置 apache2/SVN

================

首先,我假设你有一个 subversion 的软件仓库了,如果没有的话,建一个吧,或

者用 cvs2svn 转换一个过来。

 # svnadmin create /var/lib/svn/repos

 # cvs2svn -s /var/lib/svn/repos /var/lib/cvs/oldrepos

让这个目录属于 src 组,并把 www-data 加入 src 组,让 svn 仓库可以被 apac

he 访问

 # chgrp -R src /var/lib/svn

 # chmod -R g+w /var/lib/svn

 # adduser www-data src

然后,在 apache2 那里打开 svn 的支持

 # a2enmod dav_svn

 /etc/apache2/sites-available/ssl

里(如果没使用 ssl 就改 defaults 文件就可以了,下同)加上

          <Location /repos>

            DAV svn

            SVNPath /var/lib/svn/repos

            #AuthType Basic

            #AuthName "Subversion Realm"

            #require group src

          </Location>

这样,重启 apache2 之后,就可以通过 https 访问你的代码仓库了,至于其中的

鉴权部分,我们在下一个部分再介绍。

配置 PAM

========

激活鉴权用的两个模块

 # a2enmod auth_pam

 # a2enmod auth_sys_group

这样就可以用本地用户和组对 web 访问的用户进行鉴权了,对于使用了 shadow 密

码的用户,需要让 apache2 可以访问 shadow 文件

 # adduser www-data shadow

然后在 apache2 的配置文件里面把刚才注释掉的行打开

            AuthType Basic

            AuthName "Subversion Realm"

            require group src

就可以对用户进行鉴权了,AuthName 是可以任意指定的。这里,凡是 src 组的成

员都可以访问 subversion 仓库,当然也可以对用户鉴权

            require user gnawux

重新启动 apache2, 访问一下看看吧

 https://yourhostname.yourdomain/repos/

 https://yourhostname.yourdomain/repos/

总结

====

取一下代码看看吧

 $ svn co --username yourname https://yourhostname.yourdomain/repos/trun

k localdir

好了,到现在为止,你的 subversion 服务器已经配置完成了,看完这个长篇不容

易,希望能对你有所帮助。