今天来讲讲Subversion的SSL连接。假如没有SSL相关的基础知识,请先自行参阅相关资料。
http://hunter.campbus.com/
下载包含openssl模块的apache包,将解压出来的mod_ssl.so 拷贝到Apache的安装路径下的modules目录下,openssl.exe拷贝到bin目录下,conf/ssl.conf拷贝到conf目录下。
ServerName
www.example.com:443
ServerAdmin you@example.com
ErrorLog logs/error_log
TransferLog logs/access_log
http://tud.at/programm/openssl.cnf
并保存到bin/openssl.cnf。注意windows会把这个文档显示成一个拨号文档,实际上这是个文本文档,您能够用任何一个文本编辑器打开浏览一下这个文档的内容。实际上这个文档是用来生成证书和公钥的预配置文档。
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端口选项是灰色不可选,哪位有好的办法?
