Я не могу найти ни в одной документации о том, как серверить разные сайты для одного и того же имени хоста с 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 ..