Apache mod_md:处理多个 VirtualHosts 的程序?

Apache mod_md:处理多个 VirtualHosts 的程序?

我在同一台服务器上为多个虚拟主机设置了工作设置,但存在一个问题:每当添加虚拟主机时,所有服务器的 SSL 证书都会不必要地更新和移动。

在这种设置中,每个 vhost 都有一个单独的.conf文件,并且主机是单独启用的a2ensite

对于 2 个站点,这看起来像:

MDomain foo.com
MDStoreDir /var/apache-md/foo.com
<VirtualHost *:443>
  ServerName foo.com
  DocumentRoot /var/www1
  ...
</VirtualHost>

和:

MDomain bar.com
MDStoreDir /var/apache-md/bar.com
<VirtualHost *:443>
  ServerName bar.com
  DocumentRoot /var/www2
  ...
</VirtualHost>

当我启用foo.com并重新加载 Apache 时,我会在 中获得证书/var/apache-md/foo.com/domains/foo.com/pubcert.pem。到目前为止一切顺利。但是当我稍后启用 时bar.com,我现在会得到2新的证书集,最终得到:

  1. /var/apache-md/foo.com/domains/foo.com/pubcert.pem
  2. /var/apache-md/bar.com/domains/foo.com/pubcert.pem
  3. /var/apache-md/bar.com/domains/bar.com/pubcert.pem

如果我跑

$ openssl s_client -connect foo.com:443 -prexit

我发现 Apache 现在为 提供证书 2 foo.com,而不是证书 1。这显然不是一个好方法:似乎每次我添加虚拟主机时,所有证书都会更新,并全部存储在最后添加的主机的位置。

我也尝试过将所有主机设置MDStoreDir为相同的位置 ( /var/apache-md),但无法使其正常工作。 mod_md似乎要检查此目录是否存在。如果已经存在,则不会获得新证书。关于如何最好地做到这一点,有什么想法吗?

不知道mod_md我使用的是哪个版本;似乎没有办法找出答案。它是相当新的版本(Ubunut 22.04 上的 Apache 2.4.52)。

答案1

MDStoreDir 是服务器上下文设置。这意味着它是一个每个 apache.conf 存在一次的全局设置。当您尝试为第二个 vhost 唯一地设置它时,它会覆盖先前的声明。

相关内容