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

来源:百度文库 编辑:神马文学网 时间:2024/04/26 22:17:11

这两天刚配的,在 newsmth 讨论了几个相关问题,响应了一下号召,写这个配置说明

概要:服务器使用 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
 

修改 ssl 文件的开头为

 NameVirtualHost *: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 仓库可以被 apache 访问

 # 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 文件就可以了,下同)加上

         
            DAV svn
            SVNPath /var/lib/svn/repos

            #AuthType Basic
            #AuthName "Subversion Realm"
            #require group src
         

这样,重启 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 服务器已经配置完成了,看完这个长篇不容
易,希望能对你有所帮助。

原文链接:http://gnawux.blogchina.com/1544718.html