工作中经常会遇到在同一台服务器上部署多个https站点的情况,本文简单介绍实现方法。
假设apache已经安装了ssl模块。检测方法:cd /etc/httpd/modules;ll|grep ssl
,如结果为 mod_ssl.so
,表示已经安装,如结果为空,则未安装。安装方法请自行搜索。
如服务器开启了iptables防火墙,请放开443端口
申请ssl证书,下载,部署到服务器相关目录
本人在腾讯云申请的免费 TrustAsia TLS RSA CA 证书
cd /etc/httpd/conf.d
mkdir crt
# 上传三个证书文件到 crt 目录
# 文件分别是:1_root_bundle.crt,2_www.domain.com_cert.crt 和私钥文件 3_www.domain.com.key
# 以上www.domain.com 请替换成自己的域名
修改apache配置
LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443 # 这一句很关键,否则只有第一个虚拟主机生效
# 第一个虚拟主机
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName domaintest.cn
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/default/2_domaintest.cn.crt
SSLCertificateKeyFile /etc/httpd/ssl/default/3_domaintest.cn.key
SSLCertificateChainFile /etc/httpd/ssl/default/1_root_bundle.crt
</VirtualHost>
#第二个虚拟主机
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName web.domaintest.cn
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/web/2_web.domaintest.cn.crt
SSLCertificateKeyFile /etc/httpd/ssl/web/3_web.domaintest.cn.key
SSLCertificateChainFile /etc/httpd/ssl/web/1_root_bundle.crt
</VirtualHost>
测试配置文件,无误后重启apache服务
httpd -t # 检测配置文件
httpd -k restart # 重启服务
Chrome浏览器检查元素,如看到绿色的 This page is secure(valid HTTPS).
字样,表示安装成功。

至此,多站点https服务部署完成。