Сгенерировать и обновить сертификат Let's encrypt

Сгенерировать и обновить сертификат Let's encrypt

Мой домен (пример): mydomain.eu, и он синхронизирован с моим динамическим IP с помощью np-ip.
Внутри у меня есть веб-сервер, прослушивающий порт 80/443, и я получил новый wildcard-сертификат от Let's Encrypt с помощью certbot и развернул его с записью DNS (txt).

Я думаю, что этого достаточно, но нет…
Мне нужен сертификат для другого сервера (cname mydomain.eu : cloud.mydomain.eu e mail.mydomain.eu), и я настроил cname на панели своего провайдера.

Также я настроил облачный сервер с Nextcloud и хочу получить сертификат для этого сервера. Я получаю ошибку, потому что certbot хочет порты 80 и 443, но мой Ncserver слушает порты 81 и 1443. В будущем я бы создал внутреннюю веб-почту, которая также слушает другой порт.

Внутренняя установка

Example:
WEBSERVER # www.mydomain.eu - nginx - ip xxx.xxx.xxx.50 --> port 80/443
NEXTCLOUD # cloud.mydomain.eu - apache - ip xxx.xxx.xxx.51 -> port 81/1443
MAIL # mail.cloud.mydomain.eu - nginx/apache - ip xxx.xxx.xxx.52 -> port 82/2443

Конфигурация веб-сервера Nginx:

ssl_certificate /etc/letsencrypt/live/mydomain.eu/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.eu/privkey.pem;

server {
listen 80;
listen [::]:80;
server_name *.mydomain.eu;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name *.mydomain.eu;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}

server {
listen 80;
listen [::]:80;
server_name cloud.mydomain.eu;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.mydomain.eu;

location / {
proxy_pass http://xxx.xxx.xxx.51:1443;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}

Какова наилучшая практика получения сертификатов для каждого сервера (или wildcard сертификата)? Я бы лучше активировал cron для обновления сертификатов без развертывания записи txtкаждые три месяца

решение1

в случае, если все домены находятся на одном хосте, вы можете просто использовать тот же файл в другой конфигурации (вы упомянули, что доступен подстановочный сертификат)...

Вам решать, будете ли вы использовать один wildcard (повторно) на большем количестве сервисов или дополнительных сертификатов на поддомен. В любом случае, если у вас есть wildcard сертификат и планируется его автоматическое продление, вам в любом случае понадобится проверка DNS-токена (TXT-запись), и как только домен будет проверен с помощью DNS, вам даже не понадобится запускать сервер для получения сертификата... Так что в случае сертификата "на домен" вы можете использовать проверку DNS домена, поэтому нестандартные порты не будут проблемой.

В любом случае, в случае wildcard сертификата, разве не проще иметь все на стандартных портах 80/443? В наши дни нет проблем с SNI (совместное использование портов и дифференциация на основе содержимого запроса). В этом случае у вас может быть один обратный прокси-сервер (например, haproxy), обрабатывающий wildcard сертификат и передающий трафик на бэкенды (nginx, apache httpd,...)

--- редактировать - 19 января 2020 г.: 22:40 CET ---

В случае, если ваш DNS-провайдер не предлагает «простое» обновление DNS, вы можете делегировать требуемый «поддомен» своей системе и иметь работающий локальный DNS-сервер более или менее специально для случаев динамических обновлений - TXT-записи...

Предположим, что доменпример.comи ваш локальный узел с обновленным полным доменным именемlocal-example.com.noip.compointingn на вашу систему. В системе регистратора можно сделать статическую запись:

_acme-challenge.example.com. 3600 IN NS local-example.com.noip.com.

Таким образом, вы можете легко сделать делегирование для DNS-токена для домена example.com в вашей локальной системе. Там вы можете запустить локальный DNS-сервер (например, bind) с настроенным доменом_acme-challenge.example.comгде вы затем можете локально обновить запись TXT. Обратите внимание, что в этом домене недействительны записи A и AAAA, поэтому только SOA, NS и динамические обновления, по крайней мере, для TXT ;-).

Связанный контент