【问题标题】:Apache: Conditional SSLCertificateFile depending on domain?Apache:有条件的 SSLCertificateFile 取决于域?
【发布时间】:2012-01-13 14:11:39
【问题描述】:

我正在运行一个可从不同域访问的多语言网络商店,这导致不同的语言。

apache 配置非常复杂,我希望与所有商店共享一个文件。在我不得不引入 SSL 之前,我已经有了这个。 当涉及到 apache 和 SSL 证书时,我需要执行以下操作:

SetEnv is_es 0<br>
SetEnvIfNoCase Host .*es is_es 1<br>
SSLCertificateFile  /etc/ssl/certs/spanish.server.crt env=is_es<br>

这显然是不可能的,apache 告诉我:

 <i>SSLCertificateFile takes one argument, SSL Server Certificate file (`/path/to/file' - PEM or DER encoded)</i>

我想知道是否有任何解决方法。我的目标是避免拥有相同配置的不同副本,并且必须手动传播我想要进行的任何更改。 它托管在专用服务器上,因此我可以随意对设置进行任何更改。

【问题讨论】:

  • 据我所知,当您使用服务器名称指示 (SNI) 时,您几乎肯定会在这里需要,配置是使用其 ServerName 调度的每个 VirtualHost 完成的。

标签: apache https virtualhost httpd.conf


【解决方案1】:

当您使用 https 连接时,Host 标头位于 SSL 封装内,因此您需要在检查虚拟主机的主机名之前进行完整的 SSL 握手。

您应该使用SAN (Subject Alternative Names) 获取 SSL 证书,这将允许一个证书用于多个主机名。 (或通配符证书)

所有主流浏览器都已经支持:

您可以从主要的 CA 那里获得这些证书之一:

【讨论】:

  • 谢谢马塞洛。答案完全有道理,并且有一个很好的解决方法。赞一个!
  • @jeanlucorsai,我假设您已经拥有(并且需要)多个证书,在这种情况下,您还需要 SNI(或多个 IP 地址),但多个 SAN 确实应该可以在一个证书。
猜你喜欢
  • 2017-12-08
  • 2017-09-24
  • 2020-07-09
  • 2014-06-08
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
相关资源
最近更新 更多