在 Apache 中将 SSL 证书选择与虚拟主机配置分开

在 Apache 中将 SSL 证书选择与虚拟主机配置分开

目前,我的 apache 配置包括SSL 证书(所有域名均列为备用主题名称)。此外,我为每个域名配置了一个虚拟主机,用于处理 SSL 和非 SSL 请求。所有这些都发生在一个公共 IP 上。

我想使用主题名称指示切换到多个 SSL 证书,每个域一个。我知道如果我使用 SSL 复制所有 vhost 配置条目,一次用于端口 80,一次用于端口 443(如 SF 上已讨论的那样),这是可能的。

但我更希望拥有与我当前的设置类似的功能,并具有以下特点:

  • 所有 SSL 相关配置都集中在一个地方。最好的情况下,一条语句告诉 apache“使用此目录中的所有 SSL 证书,并针对每个 HTTP 请求,根据 SNI 信息选择正确的证书”
  • 虚拟主机配置不重复,并且根本没有特别提及 SSL。
  • 可以使用一个虚拟主机配置来为多个域名提供服务,同时每个域名仍具有单独的证书。

那可能吗?

答案1

Apache 支持此配置所需的虚拟主机结构是无法绕过的;<VirtualHost>块需要存在,并且需要包含设置监听器的配置指令。

你能做的最好的事情就是这样......

<VirtualHost *:80>
  # Give this file the directives like ServerName and DocumentRoot that
  # are the same between 80 and 443:
  Include /etc/confdir/domain-a.conf
</VirtualHost>
<VirtualHost *:443>
  # Same file as above, so config will be "shared"
  Include /etc/confdir/domain-a.conf
  # SSL directives for this domain (SSLEngine, cert config) in this file:
  Include /etc/confdir/ssl/domain-a-ssl.conf
</VirtualHost>

相关内容