apache 上的不同文档根目录取决于 LetsEncrypt SSL 证书的监听接口?

apache 上的不同文档根目录取决于 LetsEncrypt SSL 证书的监听接口?

我在任何文档中都找不到关于如何letsencrypt根据处理请求的接口为同一主机名提供不同站点的服务?

例如我有这个简单的配置:

<VirtualHost 10.0.0.3:80>
    ServerName internalwebsite.example.com
    ServerAdmin [email protected]

    DocumentRoot /var/www/internalwebsite.example.com/reachable_from_wan/

    ErrorLog ${APACHE_LOG_DIR}/internalwebsite.example.com_error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/internalwebsite.example.com_access.log combined
</VirtualHost>

10.3 是可从 WAN 访问的接口,但我有另一个接口(10.4)只能从内联网访问,但我希望它具有相同的域名internalwebsite.example.com,如下所示:

<VirtualHost 10.0.0.3:80>
    ServerName internalwebsite.example.com
    ServerAdmin [email protected]

    DocumentRoot /var/www/internalwebsite.example.com/reachable_from_wan/

    ErrorLog ${APACHE_LOG_DIR}/internalwebsite.example.com_error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/internalwebsite.example.com_access.log combined
</VirtualHost>
<VirtualHost 10.0.0.4:80>
    ServerName internalwebsite.example.com
    ServerAdmin [email protected]

    DocumentRoot /var/www/internalwebsite.example.com/reachable_from_intranet/

    ErrorLog ${APACHE_LOG_DIR}/internalwebsite.example.com_error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/internalwebsite.example.com_access.log combined
</VirtualHost>

这是可行的,并且 Apache 服务器根据到达的接口显示不同的内容,但是:

它在我想要生成 HTTPS 证书的域的 certbos 列表中不可用(letsencrypt在 debian 机器上运行命令时)。

我的目标是自动更新内部网站的 https 证书,而不必使内联网内容可从 WAN 访问,也不必关闭内联网内容(API 每隔几秒钟就会查询一次,因此这不是一个可接受的选项)。

我怎样才能实现我想要的(参见上面具有两个虚拟主机的 vhosts 文件)并使letsencrypt/certbot 列出该域,以便我可以为其生成 SSL 证书?

请注意,internalwebsite.example.com可以从互联网访问!这意味着letsencrypt可以验证所有权,但应该在 WAN 端进行验证。

编辑:

外部 DNS(全局 DNS)指向 WAN IP(例如 44.55.66.77),而我们的内部 DNS 在查询时返回 10.0.0.4。

实际问题是,添加这样的 vhost 域后,letsencrypt 将不允许选择该域来生成 HTTPS 证书:

web@webserver:/etc/apache2/sites-available# letsencrypt
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: example.com
2: other.example.com
3: somethingelse.example.com
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

internalwebsite.example.com此列表中缺少,当我将 vhost 配置恢复为仅内部文档根目录(因此删除 10.0.0.3 部分)时,letsencrypt 会列出域,但当然它无法验证域。(因为当 letsencrypt 尝试验证身份时,apache 不知道internalwebsite.example.com10.0.0.3 上的任何信息),当我尝试继续时,会发生此错误:

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: internalwebsite.example.com
   Type:   unauthorized
   Detail: Incorrect validation certificate for tls-sni-01 challenge.
   Requested
   f547f5b0936dad4b0e1d28c325bc36c8.da1ceb11ae0bd36d221f546faede908a.acme.invalid
   from 11.22.33.44:443. Received 2 certificate(s), first certificate
   had names "example.com, other.example.com, somethingelse.example.com"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A record(s) for that domain
   contain(s) the right IP address.

因为现在 apache 没有在 10.0.0.3 上监听,internalwebsite.example.com但是我无法暂时关闭 10.0.0.4 上的网站并将其移至 10.0.0.3。

相关内容