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

Posted

技术标签:

【中文标题】如何为 httpd 服务器的 www 和非 www 域编写 SSL 虚拟主机?【英文标题】:How to write SSL Virtual Hosts for www and non www domains for httpd server? 【发布时间】:2018-08-27 01:38:29 【问题描述】:

我为我的 2 个域 www.example.comexample.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.com 或https://www.example.com,我将分别重定向到https://example.com 和https://www.example.com。但如您所见,我只为 www.example.com 提供了证书,浏览器显示非 www 域的安全警告。

所以基本上,我想知道处理这 2 个域的 2 个证书的更好选择是什么?

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于如何为 httpd 服务器的 www 和非 www 域编写 SSL 虚拟主机?的主要内容,如果未能解决你的问题,请参考以下文章

如何为用户终止所有活动和非活动的 oracle 会话

如何为 HTTPS (SSL) 配置 Codeigniter?

如何为指向 Heroku 应用程序的***域(无 www)设置 DNS?

如何为 C++0x/11 和非 C++0x/11 制作标头? [复制]

如何为启用 javascript 和非启用 javascript 的站点创建两个平行的站点?

Django - 如何为注册站点用户和非站点用户创建模型?