Разный корень документа на apache в зависимости от интерфейса прослушивания SSL-сертификата LetsEncrypt?

Я не могу найти в какой-либо документации о том, как сервер разных сайтов для одного и того же имени хоста с letsencrypt в зависимости от интерфейса, на котором обрабатывается запрос?

У меня есть, например, эта простая конфигурация:

<VirtualHost 10.0.0.3:80>
    ServerName internalwebsite.example.com
    ServerAdmin it@example.com

    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 it@example.com

    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 it@example.com

    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 различного контента в зависимости от достигнутого интерфейса, но:

Он не будет доступен в списке доменов certbos, для которых я хотел бы создать сертификат HTTPS (при запуске letsencrypt команда на машине Debian).

Моя цель состоит в том, чтобы автоматизировать продление сертификата https для внутреннего веб-сайта, не делая контент интрасети доступным из глобальной сети или не отключая контент интрасети (API запрашивают его каждые несколько секунд, так что это неприемлемый вариант),

Как мне добиться того, чего я хочу (см. Выше файл vhosts с двумя виртуальными хостами) и сделать так, чтобы letsencrypt / certbot перечисляет этот домен, чтобы я мог создать для него сертификат SSL?

Обратите внимание, что internalwebsite.example.com доступно из интернета! Что значит letsencrypt может подтвердить владение, но он должен подтвердить это на стороне глобальной сети.

Редактировать:

Внешний DNS (глобальный DNS) указывает на IP WAN (например, 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.com на 10.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..

0 ответов

Другие вопросы по тегам