以 CentOS7 Apache 为例,简述下如何为多个域名配置不同的SSL证书并访问同一VPS。 前提: 需要提前准备好 SSL 证书文件(自签名证书和认证的证书都可以,示例中的 SSL 证书,来自 Let’s Encrypt)。 下面的示例实现了,以 HTTPS 方式,使用 leovp.com 和 50d.win 这两个域名,都可以访问相同的网站。 在 /etc/httpd/conf.d 下新建配置文件:50d.win.conf
1 vim /etc/httpd/conf.d/50d.win.conf
内容如下:
1 2 3 4 5 6 7 8 9 <VirtualHost *:443> ServerName www.50d.win ServerAlias 50d.win *.50d.win DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/letsencrypt/live/50d.win/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/50d.win/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/50d.win/chain.pem </VirtualHost>
另外再新建一个:leovp.com.conf
1 vim /etc/httpd/conf.d/leovp.com.conf
内容如下:
1 2 3 4 5 6 7 8 9 <VirtualHost *:443> ServerName www.leovp.com ServerAlias leovp.com *.leovp.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/letsencrypt/live/leovp.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/leovp.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/leovp.com/chain.pem </VirtualHost>
若需要将 HTTP 全部转向 HTTPS,可以添加如下转发规则:例如,修改 50d.win.conf 配置文件,追加如下代码:
1 2 3 4 5 6 7 8 <VirtualHost *:80> ServerName www.50d.win ServerAlias 50d.win *.50d.win RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost>
注意 :如果默认站点的 SSL 配置,是在 /etc/httpd/conf.d/ssl.conf 文件中进行配置的话,那么还需要在此文件中明确指定 ServerName,否则在访问网站时可能会出现 SSL 配置出错的提示。例如,假设默认站点的 ServerName 是 www.leovp.com:
1 2 3 4 5 6 7 <VirtualHost _default_:443> DocumentRoot "/var/www/html" ServerName www.leovp.com ServerAlias leovp.com *.leovp.com
参考文章: