您的位置:首页 > 理论基础 > 计算机网络

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

2014-07-13 22:25 841 查看

建立网站时,特别是支付网站和电子商务网站,为了让客户信赖网站,让他们不把我们当做骗子,网站一般会安装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 等三个文件,如下图所示:



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

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

2.生成相关的证书

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



2). 设置openssl环境变量

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



3). 生成server.key

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



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 []: 可空



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

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



6). 查看证书详细信息

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



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



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

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/,出现如下界面:



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



转载自:http://www.phpmarker.com/226.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: