上星期五,由于测试需要,
PM
要我们安装带
SSL
的
Apache
服务器,东西都给我们了,给了一个文档。
Step by step
的按照那个
Guide
做,发现一个到生成服务器公钥时出错,懵了
。
看那个文档好像就是从网上
copy
的,一搜索,果然被我猜中了,
。再追根溯源,发现就是参考的
Windows 下安裝設定 Apache2 + PHP5 + mod_ssl
这篇文章,好,就按这个来。
我整理如下:
--------------------------------------
预先工作
-
需要下载的文件:
安装需要东西,下面是我们要用到的,先下载下来:
安装相关东东:
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
目录
下。
作者:truebit