如何在单个 Apache 实例上使用一个证书托管主域,使用另一个通配符证书托管子域

如何在单个 Apache 实例上使用一个证书托管主域,使用另一个通配符证书托管子域

我在旧金山四处搜索,了解到其他 帖子使用 TSL,可以在单个 Apache 实例上为不同的子域提供多个 SSL/TSL 证书。我想知道是否/如何使用一个证书托管主域,同一主域名的子域名使用单独的通配符证书。

我正在开发一个主要以英语运行的网站。当人们访问www.example.com,我们有一个 mod_rewrite 规则将它们重定向到示例.com。它还将普通的旧 HTTP 请求重定向到 HTTPS。我们已为服务器配置了非常好的扩展验证 (EV) 证书,可将您的浏览器地址栏变为绿色 - 看起来非常安全且值得信赖。

问题是我们想在其他子域中显示其他语言。例如:

  • 西班牙语es.example.com
  • 德语de.example.com
  • 意大利语它.example.com

我们的扩展验证证书对这些子域名无效,因此我们购买了通配符证书,并且我们想设置 Apache,以便它使用 EV 证书进行 HTTPS 请求示例.com以及针对所有语言子域的 HTTPS 请求的通配符证书。

我理解此 Digicert 支持文档和一个serverfault 帖子Apache 2.4.18 应该支持对不同域使用多个 SSL 证书如果使用 TSL 建立 HTTPS 连接但如果它们是使用 SSL 制作的,则不会。digicert 文档建议创建一个完全独立的 VirtualHost 部分,每个证书一个,但我想知道是否还有其他我遗漏的细节。例如,我们当前的 apache conf 缺少 ServerName 指令,我不确定是否需要为每种受支持的语言创建一个 ServerAlias 指令,或者我们是否可以在这些 apache 配置中使用通配符?此外,子域(en.example.com)是主域(example.com)的超字符串——我担心这可能会在路由请求时造成混淆?

目前,我们唯一的 Apache SSL conf 位于/etc/apache2/sites-available/default-ssl.conf当你删除所有评论时,看起来像这样:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/html/
        SetEnv CI_ENV testing
        <Directory /var/www/html>
            AllowOverride All
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
            SSLCertificateFile      /etc/ssl/certs/ev-ssl-certificate.crt
            SSLCertificateKeyFile /etc/ssl/private/ev-private.key
            SSLCACertificateFile /etc/ssl/certs/ev-IntermediateCA.crt
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
    </VirtualHost>
</IfModule>

有人能告诉我在这种情况下最佳实践方法是什么吗?理想情况下,我们将复制尽可能少的代码来实现这一点。我也非常感谢任何警告或陷阱。例如,我怀疑我需要禁用 SSL 协议,以便仅使用 TSL。

答案1

您应该创建两个虚拟主机文件,将虚拟主机信息存储在单独的文件中,并从默认虚拟主机文件中复制配置。有关更多信息,请参阅如何使用 Apache 在一个 IP 上设置多个 SSL 证书

据我了解,您将多语言网站作为主要的英语网站,将其他有限语言特定网站作为子域,您希望通过为所有网站显示绿色品牌栏来赢得客户的信任。您可以使用单个EV 多域名 SSL 证书;它将使您的公司名称出现在浏览器的地址栏中www.example.comes.example.comde.example.com它.example.com. 一些示例供应商:

相关内容