文章目录
本文的测试结果基于XAMPP 5.6.28
软件,相关的版本信息如下:
text
Windows Version: Home 64-bit
XAMPP Version: 5.6.28
Control Panel Version: 3.2.2 [ Compiled: Nov 12th 2015 ]
第1步:购买SSL证书
可以从阿里云购买SSL证书,然后下载对应服务器(如Apache)相关的证书文件。
现假设您购买了绑定域名abc.com
的SSL证书,下载下来的证书文件将会是:
text
abc.com.key
abc.com_public.crt
abc.com_chain.crt
第2步:确保443端口没有被占用
bash
netstat -ano | findstr 443
图中,最后一列,就是占用端口的进程号。可以taskkill强制结束占用进程:
bash
taskkill /f /pid 2916
第2步:httpd.conf启用SSL
编辑xampp/apache/conf/httpd.conf
,将如下2行前面的#
注释符去掉,以加载SSL模块,并引入相关配置。
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
第3步:httpd-ssl.conf配置
一个配置好的httpd-ssl.conf
完整文件(删除了其他注释)内容如下:
bash
Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLHonorCipherOrder on
SSLProtocol all -SSLv3 #排除不安全的v3协议
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:D:/xampp/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
# SSLUseStapling On
<VirtualHost _default_:443>
DocumentRoot "D:/data_path/web"
ServerName dev.abc.com:443
ServerAdmin admin@example.com
ErrorLog "D:/xampp/apache/logs/error443.log"
TransferLog "D:/xampp/apache/logs/access443.log"
SSLEngine on
ProxyPass /tc http://127.0.0.1:8989
ProxyPassReverse /tc http://127.0.0.1:8989
SSLCertificateFile "D:/xampp/apache/cert/abc.com_public.crt"
#SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "D:/xampp/apache/cert/abc.com.key"
#SSLCertificateKeyFile "conf/ssl.key/server.key"
#SSLCertificateChainFile "D:/xampp/apache/cert/abc.com_chain.crt"
#SSLCACertificatePath "conf/ssl.crt"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "D:/xampp/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "D:/xampp/apache/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
一些解释
这里为abc.com
下面的子域名dev.abc.com
配置了SSL证书。
DocumentRoot
设置你需要通过HTTP访问的文档根路径。
ProxyPass和ProxyPassReverse额外配置了一个反向代理,将对dev.abc.com/tc
路径下的所有请求,转到本机的8989端口上(比如Tomcat在该端口上提供HTTP服务)。
以上配置正确,重启XAMPP Apache服务,就可以https方式访问DocumentRoot
下的内容了。