1.首先去http://hunter.campbus.com/ 下载包含openssl模块的apache包,将解压出来的mod_ssl.so 拷贝到Apache的安装路径下的modules目录下,openssl.exe拷贝到bin目录下,conf/ssl.conf拷贝到conf目录下。
2.打开拷贝过来ssl.conf,将一下几行加上#注释掉
DocumentRoot "c:/apache/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog logs/error_log
TransferLog logs/access_log
3.把SSLCertificateFile conf/ssl.crt/server.crt改成SSLCertificateFile conf/ssl/my-server.cert
4.把SSLCertificateKeyFile conf/ssl.key/server.key改成SSLCertificateKeyFile conf/ssl/my-server.key
5.把SSLMutex file:logs/ssl_mutex改成SSLMutex default
6.删除或者注释这两行<IfDefine SSL>和</IfDefine>
7.打开Apache的配置文件http.conf,把其中的#LoadModule ssl_module modules/mod_ssl.so这一行的注释去掉
8.下载http://tud.at/programm/openssl.cnf 并保存到bin/openssl.cnf。注意windows会把这个文件显示成一个拨号文件,实际上这是个文本文件,你可以用任何一个文本编辑器打开浏览一下这个文件的内容。实际上这个文件是用来生成证书和公钥的预配置文件。
9.在命令行下进入$/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端口选项是灰色不可选,哪位有好的办法?
注意:OpenSSL.exe运行需要ssleay32.dll和libeay32.dll,因此无法运行的话,请检查这2个DLL
本文转自:http://www.cnblogs.com/Java_Aix/archive/2005/02/10/103717.html