Chinaunix首页 | 论坛 | 博客
  • 博客访问: 422436
  • 博文数量: 81
  • 博客积分: 2830
  • 博客等级: 少校
  • 技术积分: 1445
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-24 09:19
文章分类

全部博文(81)

文章存档

2011年(1)

2010年(34)

2009年(16)

2008年(30)

我的朋友

分类: LINUX

2008-04-21 14:39:18

SVN+APACHE权限管理,终于花了两天的时间搞定了,郁闷NND.
 
httpd.conf的配置
 

  DAV svn
  SSLRequireSSL
  SVNListParentPath on
  AuthzSVNAccessFile /home/svn/conf/authz
  SVNParentPath /home/svn
  AuthType Basic
  AuthName "subversion"
  AuthUserFile /usr/local/apache/passwd

  Require valid-user

 
说明:网上好多说AuthzSVNAccessFile和AuthUserFile不能并存,害的额绕了好多弯路。
    Require valid-user

这个东西是用来提供匿名访问的,既所有的用户都不需要用户认证就可以读取工程源码与文档。这样会不安全,容易泄露源码。
 
 
认证文件的配置
 
vi /home/svn/conf/authz
[groups]
admin = admin
dev1 = jack, kate
dev2 = zbh2342, yingjianhh45, tantt, arei22
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[project:/]
* = r  /其他用户只有读权限
@admin = rw /admin,dev1这个两个组有读写权限
@dev1 = rw
对子项目的控制
[project:/DDWap] /对project/DDWap子目录有读写权限,下面类似。
@dev2 = rw
[project:/DDAdmin]
@dev2 = rw
[project:/DDSync]
@dev2 = rw
[project:/DDWeb]
@dev2 = rw
[project:/DDWeb]
@dev2 = rw
[project:/docs]
@dev2 = rw
[project:/thirdparty]
@dev2 = rw
我的系统管理的目录
[sysmanage:/]
* =
@admin = rw
# Give the doc people write access to all the docs folders
[doc:/]
@docs = rw
# Give trainees write access in the training repository only
#[TrainingRepos:/]
= rw
#admin = rw
 
 
添加证书:
 

首先生成证书请求:

#openssl req -new > server.csr

按照提示输入相关信息后,会在当前目录自动生成server.csr和privkey.pem两个文件,privkey.pem是私钥文件,默认会有passphrase,如果不移除的话,每次运行apache的时候都会提示输入passphrase,所以如果服务器重启后如果你不在服务器前面,则apache无法正常运行。

所以,第二步需要移除passphrase:

#openssl rsa -in privkey.pem -out server.key

这一步会让你输入前面设定的passphrase,所以在前面的时候不要胡乱设定一个passphrase哈。

第三步,生成服务器证书:

#openssl req -x509 -days 36500 -key server.key -in server.csr > server.crt

days参数是指定证书有效期的,36500是100 年,修改

/usr/local/apache_svn/conf/extra/httpd-ssl.conf

SSLCertificateFile /usr/local/apache/conf/server.crt
SSLCertificateKeyFile /usr/lcoal/apache/conf/server.key

然后重启apache即可。

====

UPDATE:

还有一种方法,先按照指定算法生成密钥:

#openssl genrsa -des3 2048 -new > server.old.key

然后移除passphrase:

#openssl rsa -in server.old.key -out server.key

然后生成证书请求:

#openssl req -new -key server.key > server.csr

最后生成证书:

#openssl req -x509 -days 36500 -key server.key -in server.csr > server.crt


阅读(1999) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~