TLS1.2需要apache>=2.2.23并且OpenSSL至少在 1.0.1版本以上
windows下如果绑定到小程序使用,建议直接使用apache2.4.
以下演示环境为windows2012R2+apache2.2+openssl 0.9.8y
apache开启https需要ssl_module模块,下载apache时候选择ssl版本同时安装apache时候务必选择上。
编辑apache配置文件httpd.conf
取消ssl_module前的注释,加载ssl模块
同时取消包含httpd-ssl.conf语句前的注释
打开httpd-ssl.conf文件,可以看到起和httpd.conf中监听80端口类似,有监听443端口的指令,同时又一个默认https站点配置文件。
本演示中,为了方便维护,和以前建立apache下站点一样,把https站点单独放到一个目录包含进来,所以我这里去掉httpd-ssl.conf中默认https的站点配置文件。
参考默认https主机配置文件,写我们自己的域名虚拟主机站点配置。
如下:
<VirtualHost *:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
#https证书路径设置
SSLCertificateFile “D:/server/Apache2.2/conf/cert/pentester/certificate.crt”
SSLCertificateKeyFile “D:/server/Apache2.2/conf/cert/pentester/private.key”
SSLCertificateChainFile “D:/server/Apache2.2/conf/cert/pentester/ca_bundle.crt”
#虚拟主机路径、域名绑定
DocumentRoot “D:/wwwroot/pentester.cn”
ServerName www.pentester.cn
ServerAlias pentester.cn
ServerAdmin x@pentester.cn
ErrorLog “D:/server/Apache2.2/logs/pentester.cn_error.log”
TransferLog “D:/server/Apache2.2/logs/pentester.cn_access.log”
<FilesMatch “\.(cgi|shtml|phtml|php)$”>
SSLOptions +StdEnvVars
</FilesMatch>
BrowserMatch “MSIE [2-5]” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog “D:/server/Apache2.2/logs/pentester.cn_ssl_request.log” \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”
</VirtualHost>
可以看到和以前文档中apache建立虚拟主机的配置文件基本一样,新增了证书路径设置和SSL协议设置。
SSLCertificateFile为域名ssl证书路径
SSLCertificateKeyFile为域名证书私钥文件路径
SSLCertificateChainFile为域名证书ca证书路径
确认证书路径、文件名、日志文件路径无误后保存。
和apache2.2下开启80端口多站点(虚拟主机一样),为了能测试多个绑定域名和站点,需要开启虚拟主机。
在httpd.conf中增加NameVirtualHost *:443 开启443端口虚拟主机支持(如果你测试为8443,则改为8443,同时虚拟主机配置文件和这个端口一致,访问时候带上端口号)本例中使用milworm.cn和pentester.cn两个域名,建立两个站点,分别绑定https和对应证书。
访问测试效果如下:
证书成功绑定并分别识别到自己证书。
TLS版本为1.0。
修改httpd.conf配置,加载SSL模块,包含apache下ssl配置文件;
增加虚拟主机站点,指定监听端口,指定对应证书文件路径;
TLS版本和apache\OpenSSL有关,操作前先确认好对应版本;
windows下操作必要情况下建议使用高版本apache;
配置文件下载:apache2.2-ssl.zip