环境win7
工具OpenSSL
httpd-2.2.22-win32-x86-openssl-0.9.8t.msi (apache官网下载,自带openssl)
SSL是一个可以保证你的通讯安全的机制,采用公钥私钥的非对加密机制,具体机制我就不说了,网上一抓一大把。
你可以使用openssl建立自己的密钥,并使用在Apache Webserver上,让你的服务器支持https。
openssl.exe和openssl.cnf放在一起。
- 建立你自己的服务器私钥,一个1024位的就够了
openssl genrsa -des3 -out server.key 1024 - 生成CSR文件,Certificate Signing Request
openssl req -new -key server.key -out server.csr (或者 openssl req -new -key server.key -out server.csr -config d:\openssl.cnf ) - 生成证书CRT文件,X509协议
openssl x509 -req -in server.csr -signkey server.key -out server.crt
注意,这是一个自签名的证书
- 修改你apache的ssl配置,
SSLCertificateFile "/path-to/server.crt"
SSLCertificateKeyFile "/path-to/server.key" - 启动你的apache,使用https访问试试看,是不是要你确认是否允许证书通过
如果apache仍不能启动,查看日志文件,出现
SSLPassPhraseDialog builtin is not supported on Win32 (key file D:/soft/apache/Apache2.2/conf/server.key)。
是因为 Win32平台不支持加密密钥
既然不支持加密,就把server.key的文件解密,同时注释掉httpd-ssl.conf文件中SSLPassPhraseDialog 。
解密:
1、复制server.key 为server.key.org
2、对server.key.org解密 openssl rsa -in server.key.org -out server.key s输入密码后解密成功
3、打开httpd-ssl.conf 找到SSLPassPhraseDialog builtin 在前面加上#
好了,重新启动,成功运行,问题解决。
这时候,你的服务器已经支持SSL了,刚才浏览器问你是否通过你服务器提供的证书是表示客户端(浏览器)信任了你的服务器,这里也就是服务器认证。你们之间的通讯已经是加密的了。
PS:apache默认http端口号是80,https端口号是443,如果之前装了IIS这两个端口号会被占用,需要在conf\httpd.conf和conf\extra\httpd-ssl.conf中修改。
撒花~~~