Разный корень документа на 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..