Apache - 虚拟主机海量客户端可配置 SSL,反向代理

Rob*_*ger 6 ssl apache-2.4

我的方案是我们为客户托管多个网站,并且所有客户网站仅在 SSL 上运行。

目前,我们为 Apache 的每个客户端都有一个单独的虚拟主机文件。除了服务器名称/别名和 ssl 配置部分之外,每个文件几乎相同。其余的配置几乎只是一些反向代理声明,告诉 apache 终止 ssl,然后将流量传递到后端 IIS(.net 站点)。注意:所有站点都在同一个 IP 上运行,因此使用了 SNI 并且似乎运行良好(目前尚无合规性,这很好)。

我们拥有的另一个主要功能是客户能够登录他们的“客户门户”(我们的网站)并生成一个 CSR 以发送给第三方以使其签名并将证书返回给我们。当他们生成 CSR 时,我们将私钥保存在服务器上。

问题在于:

1)考虑到大多数文件在它们之间是相同的,很难为每个客户端维护一个单独的虚拟主机文件。(文件描述符限制也成为一个问题)

2) 客户端可以随时更改其 ssl。即他们可能只剩下 2 个月的证书,因此想要登录到他们的帐户并获得一个新的 CSR 并在 2 个月内更改他们的 ssl 证书。问题出现了,我需要在 apache 上“重新启动”以重新加载证书。请记住,所有站点都通过同一个 Web 服务器运行,因此重新启动它会影响所有站点。

所以:

1)我正在考虑转移到为Apache的“动态配置的大规模虚拟主机”,然而,根据该网站在这里,下面的陈述:

除非所有动态托管的域都是通配符子域 SSL 证书涵盖的子域,否则服务器上无法终止 SSL

然而,每个站点都是它自己的域,而不仅仅是子域。

有没有办法在 Apache 中使用动态 ssl 来实现这种大规模托管。如果不是(我认为是这种情况),我可以在 apache 的“前面”放置什么来终止不需要重新启动的 ssl 连接?(它需要有一些方法来更改证书但不影响在同一 IP/Web 服务器上运行的其他站点)

即(HAProxy/Pound/other??) --> Apache --> IIS

小智 1

我会将 Hitch TLS 代理放在 apache 前面 - https://hitch-tls.org/

从功能列表来看:

  • 对于大型安装来说是安全的:性能高达 15 000 个监听套接字和 500 000 个证书。
  • 支持证书和侦听端点的无缝运行时配置重新加载。

除非您的用户自己创建 CSR 并选择 CA 非常重要,否则请考虑启用 Let's Encrypt 和 Acmetool 的连接。通过分别添加和删除域的一些脚本,您将获得所有域的免费证书,并自动颁发和自动续订。设置并忘记=赢:赢。

请参阅:https ://info.varnish-software.com/blog/ Five-steps-to-secure-varnish-with-hitch-and-lets-encrypt