Назад | Перейти на главную страницу

Различный корень документа на 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 для внутреннего веб-сайта без необходимости делать контент интрасети доступным из WAN или без необходимости отключать контент интрасети (API запрашивают его каждые несколько секунд, поэтому это неприемлемый вариант) .

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

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

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

Внешний 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 ..