首页 > 代码库 > [转]配置Apache服务器支持https协议和SSL证书

[转]配置Apache服务器支持https协议和SSL证书

建立网站时,特别是支付网站和电子商务网站,为了让客户信赖网站,让他们不把我们当做骗子,网站一般会安装SSL,我们访问网站时都是以https开头的,而不是以http开头的。下面是在windows环境下配置Apache服务器支持https协议和SSL证书。

1.配置Apache服务器支持openssl

配置Apache服务器支持https协议和SSL证书,最基本的要求是Apache包含openssl模块。在Windows下面单独安装openssl比较麻烦,最好还是安装那种绑定openssl的apache。我安装的是httpd-2.2.25-win32-x86-openssl-0.9.8y.msi,点击这里下载。

安装完成之后,在Apache安装目录的bin目录下可以看到 libeay32.dll、openssl.exe、ssleay32.dll 等三个文件,如下图所示:

apache 支持 ssl 的文件

再查看一下modules目录下是否存在 mod_ssl.so,查看 conf目录下是否存在openssl.cnf。

如果上面的都存在,可以确定Apache 能够支持 openssl 模块。

2.生成相关的证书

   1). 使用DOS命令进入Apache bin目录

windows DOS命令下进入Apache bin 目录

   2). 设置openssl环境变量

使用DOS命令在bin目录下执行命令:set OPENSSL_CONF=..\conf\openssl.cnf,通过此命令设置openssl的环境变量,如果不执行此命令,后面的操作会报错。

DOS命令设置openssl环境变量

   3). 生成server.key

DOS下执行命令:openssl genrsa 4096 > server.key,执行了这个命令,会在bin目录下生成server.key。注释:这是使用128位的RSA算法生成的密钥,还可以使用其他的算法生成密钥,相关的用法可以使用搜索引擎搜索。4096是密钥的长度,这个值最好使用4096以上的值,必须是2的整数次方。

命令生成openssl密钥

 4). 生成未签署的server.csr

DOS命令下执行:openssl req -new -key server.key > server.csr,这个命令使用生成的密钥文件 server.key生成证书请求文件server.csr,执行这一命令之后,后面还要输入很多参数。

Country Name (2 letter code) [AU]:CN                                                                        ISO国家代码(只支持两位字符)
State or Province Name (full name) [Some-State]:Hu Bei                                         所在省份
Locality Name (eg, city) []:Wu Han                                                                               所在城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mark Company    公司名称
Organizational Unit Name (eg, section) []:IT                                                               组织名称
Common Name (e.g. server FQDN or YOUR name) []:www.phpmarker.com       申请证书的域名
Email Address []:phpmarker@163.com                                                                        管理员邮箱
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:                                                                                                    交换密钥 可空
An optional company name []:                                                                                         可空

openssl生成未签署的server.csr

 5). 签署服务器证书文件server.crt

DOS命令下执行:openssl req -x509 -days 365 -key server.key -in server.csr > server.crt,这个命令使用第三步和第四步生成的密钥和证书来生成证书server.crt,-days参数表示证书有效期,单位为天,x509表示生成的是X.509证书。

openssl 签署服务器证书文件server.crt

 6). 查看证书详细信息

DOS下执行命令:openssl x509 -noout -text -in server.crt,这个命令可以查看证书的详细信息

openssl查看证书详细信息

执行上面所有的命令之后,在Apache的bin目录下生成了三个文件server.key、server.csr、server.crt。

https相关的密钥和证书文件

注意:这样生成的证书只能作为测试使用,这种证书是不可信赖的,浏览器会给出警告的。如果想要真正使用,可以找相关提供证书的网站提供有关的证书。

3.配置Apache服务器载入openssl相关的配置文件

修改Apache conf目录下的httpd.conf配置文件找到 LoadModule ssl_module modules/mod_ssl.so,移除前面的#,找到 Include conf/extra/httpd-ssl.conf,移除前面的#

4.修改httpd-ssl.conf文件

httpd.conf文件载入的ssl配置文件为 conf/extra/httpd-ssl.conf,找到 <VirtualHost _default_:443>,修改里面的有关配置,我的配置如下:

# General setup for the virtual host
DocumentRoot “K:/wwwroot/mark1990.com”       网站路径
ServerName www.phpmarker.com:443                   网站域名
ServerAdmin phpmarker@163.com
ErrorLog “K:/Apache/logs/error.log”
TransferLog “K:/Apache/logs/access.log”

SSLCertificateFile “K:/Apache/conf/server.crt”
SSLCertificateKeyFile “K:/Apache/conf/server.key”
SSLCertificateChainFile “K:/Apache/conf/server.crt”

我是将 server.key、server.crt、server.csr移动到 conf 目录下

5.修改host文件,重启Apache服务器

进入 Windows\System32\drivers\etc目录下,向 hosts添加127.0.0.1 www.phpmarker.com,重新启动Apache服务器,访问https://www.phpmarker.com/,出现如下界面:

Apache https 证书安装完成

出现这种界面,因为我们自己制作的证书,不被浏览器所信赖。我们查看证书详细情况:

https 证书

 

 转载自:http://www.phpmarker.com/226.html