Subversion配置安装教程(三)
今天来讲讲Subversion的SSL连接。如果没有SSL相关的基础知识,请先自行参阅相关资料。
- 首先去http://hunter.campbus.com/ 下载包含openssl模块的apache包,将解压出来的mod_ssl.so 拷贝到Apache的安装路径下的modules目录下,openssl.exe拷贝到bin目录下,conf/ssl.conf拷贝到conf目录下。
- 打开拷贝过来ssl.conf,将一下几行加上#注释掉 DocumentRoot "c:/apache/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog logs/error_log
TransferLog logs/access_log - 把SSLCertificateFile conf/ssl.crt/server.crt改成SSLCertificateFile conf/ssl/my-server.cert
- 把SSLCertificateKeyFile conf/ssl.key/server.key改成SSLCertificateKeyFile conf/ssl/my-server.key
- 把SSLMutex file:logs/ssl_mutex改成SSLMutex default
- 删除或者注释这两行<IfDefine SSL>和</IfDefine>
- 打开Apache的配置文件http.conf,把其中的#LoadModule ssl_module modules/mod_ssl.so这一行的注释去掉
- 下载http://tud.at/programm/openssl.cnf 并保存到bin/openssl.cnf。注意windows会把这个文件显示成一个拨号文件,实际上这是个文本文件,你可以用任何一个文本编辑器打开浏览一下这个文件的内容。实际上这个文件是用来生成证书和公钥的预配置文件。
- 在命令行下进入$\program files\apache group\apache2,输入命令:
bin\openssl req -config bin\openssl.cnf -new -out my-server.csr
回答相关问题即可生成一个CSR,也就是一个待签名的证书。本质上说,CSR 就是一个在您的服务器上生成的证书,当您向第三方证书颁发机构申请证书时,它用来验证有关您的服务器的计算机特定信息。实际上,CSR 就是一条用公钥/私钥对加密的文本消息。如图:
然后输入命令:
bin\openssl rsa -in privkey.pem -out my-server.key
执行成功会生成私匙,如图:
接着输入bin\openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000
这样会生成一个在4000天后过期的用刚刚生成的私匙签名过的x509证书。
最后输入bin\openssl x509 -in my-server.cert -out my-server.der.crt -outform DER
这一步是生成了DER格式的证书,对于那些不能识别PEM格式证书的程序,可以使用这种证书。如图:
最后把在$\Apache Group\Apache2目录下生成的my-server.der.crt, my-server.csr, my-server.key, .rnd, privkey.pem, my-server.cert6个文件复制到conf/ssl下,如果ssl这个目录不存在,请先新建这个目录。Ok,大功告成,请在浏览器地址栏输入https://youserver/svn/TestRepository/,看到了什么?呵呵,是不是比较有成就感呢?看看我自己生成的证书:
然后是证书的详细信息:
注意:以上3和4步骤可以不更改,改不改完全都是个人喜好,如果不改,那么在第9个步骤里面相关的命令需要做相应的修改。另外,设置了SSL加密连接以后,通过https://youserver/svn 不会再显示所有的repository列表了,而是显示没有权限访问。而通过http://youserver/svn访问就可以。我怀疑是昨天写的那个php脚本有些问题,没有使用相关的SSL协议访问相关路径,如果有时间我会考虑使用python再次实现。不知道我想的对不对,哪位大侠指教一下?
注意:IIS和Apache的SSL连接会有冲突,具体表现在它们都会尝试使用443作为https协议的端口,我在MS的网站上找到了一篇KB文章,说是改注册表可以关闭ssl服务,我试了一下,似乎不行,在IIS的控制面板里面更改SSL端口选项是灰色不可选,哪位有好的办法?