预先工作 -需要下载的文件:
安装需要东西,下面是我们要用到的,先下载下来:
1. apache_2.0.59-win32-x86-no_ssl.msi
2. Apache_2.0.59-Openssl_0.9.8b-Win32.zip
3. openssl.cnf
安装:
1.直接安装apache_2.0.59-win32-x86-no_ssl.msi,用官方的这份安装文件的话,可以用 monitor 帮你装成 Windows 服务,这样就能设定开机时自动启动 web服务器了。安装时会要你填入相关的讯息,建议SeverName用IP 地址。同时也留意一下你把 apache 装在哪个目录下(比方说 C:Apache2,安装文件会生成Apache2文件夹,假如你安装在C:下)。
2.如果你的 apache 服务已经启动(可以看右下角的工具列图示),请先将它 stop,然后找个地方解开 2 ,我们需要把解开后的 bin 目录下的Apache.exe、ssleay32.dll、libeay32.dll及openssl.exe放到你 apache 安装目录下的 bin 目录里,替换掉原本的apache.exe。解压出来然后再将 2 解开后的 conf 目录下的 ssl.conf 也复制一份到你自己 apache 目录(如 C:Apache2)下的 conf 目录里。
3.还有 modules 目录下的 mod_ssl.so 也要放到 apache 目录下的 modules 目录里。在Httpd.conf文件中找到#LoadModule ssl_module modules/mod_ssl.so,把前面的#号删除。
配置ssl.conf文件:
1.在ssl.conf 里找到下列这段叙述,然后把它改成你的设定:(用文本编辑器,如记事本打开)
# General setup for the virtual host DocumentRoot "你的网页根目录,可以找 httpd.conf文件下的 DocumentRoot" ServerName 你的 domain name或者直接用 IP地址:443 ServerAdmin 你的 Email地址,我就随便填的,只是自己用 ErrorLog logs/error_log TransferLog logs/access_log |
2.
查
看
ssl.conf
文件里是不是有这几行:
SSLCertificateFile conf/ssl.crt/server.crt SSLCertificateKeyFile conf/ssl.key/server.key SSLCertificateChainFile conf/ssl.crt/ca.crt |
3.我自己是把 ssl.conf 里的 <ifdefine SSL> 及 </ifdefine> 注解掉,这就要看你要不要再去 httpd.conf 里 define SSL了,嫌麻烦就注解掉。
生成证书文件:
我们要产生用SSL连接(HTTPS)时所需要加密的 key 及身份验证用的CA。
切换至 Apache2 的 bin 目录下,把openssl.cnf 置其中。把openssl.cnf文件拖到文本编辑器中打开,修改[ CA_default ]内的字段如下。
dir = ssl certs = $dir\certs crl_dir = $dir\crl database = $dir\index.txt new_certs_dir = $dir certificate = $dir\cacert.pem serial = $dir\serial crl = $dir\crl.pem private_key = $dir\privkey.pem RANDFILE = $dir\privkey.rnd |
还有别忘了把这个文件的 x509extensions 这一行在开头加上 # 把它注解掉。那篇Guide就是这错了,害我生成Server public key失败...
然后在Apache2 的bin目录下建立一个 ssl 资料夹,在里面新增两个文件:index.txt 及 serial,index.txt 让它保留空白即可,然后 serial 文件输入 01 。
然後在命令行模式下(「开始」->「运行」输入cmd,然后用 cd 指令切到Apache2的bin)依次输入下列命令:
1.生成 CA private key,它会要求你输入密码,记住了,以后还要用到。 openssl genrsa -des3 -out ssl/ca.key 1024 2.生成 CA require cert,按照它的说明填入对应资料 openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr 3.生成 CA public cert. openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt 4.生成 Server private key openssl genrsa -out ssl/server.key 1024 5.生成 Server require cert,这里跟上面填入相同的资料 openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr 6.生成 Server public key openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt |
注意:在上边两步填写资料时,Common Name (eg, your websites domain name) []要填的和httpd.conf中的一样,否则会出错,在Apache的错误日志中发现错误为“ 证书和服务器名称不匹配”(SA server certificate CommonName (CN) `127.0.0.1' does NOT match server name!?)。如果ServerName设为127.0.0.1:80的话,Common Name (eg, your websites domain name) []好像填localhost和127.0.0.1都可以。
如果沒有错误提示的话,那在你的ssl 文件夹下应该至少会有ca.crt、server.crt 及 server.key這三个文件(确认它们不是0 byte)。
然后把在Apache 安装目录的conf文件夹下建立ssl.crt和ssl.key文件夹。把 ca.crt 及 server.crt 放到ssl.crt目录下,而 server.key 放到ssl.key目录下。
如果你很顺利到这里,那就可以重新启动 apache 的服务,然后试试看能不能用 https://127.0.0.1 连接到你的网页吧!
评论