如何为httpd服务器的www和非www域编写SSL虚拟主机?

时间:2018-03-18 10:45:27

标签: apache ssl redirect httpd.conf lets-encrypt

我为我的2个域 www.example.com example.com

生成了证书

以下是HTTP和HTTPS协议的 .conf 文件:

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/funapps
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [NE,R=temp]
</VirtualHost>

在另一个文件中:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/funapps
<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost>
</IfModule>

现在,这种情况发生了:

如果我访问http://example.comhttps://www.example.com,我会分别重定向到https://example.comhttps://www.example.com。但是如您所见,我仅为 www.example.com 提供了证书,浏览器显示非www域的安全警告。

基本上,我想知道哪个选项可以更好地处理这2个域的2个证书?

  1. 在同一个HTTPS虚拟主机部分添加SSL证书文件的IF / ELSE条件(我不知道该怎么做)或
  2. 指定包含各自证书的2个不同的HTTPS虚拟主机?

1 个答案:

答案 0 :(得分:1)

解决方案2是我们如何实施SSL虚拟主机。我不知道如何实施解决方案1,我认为这是不可能的。