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

Сгенерировать и обновить Давайте зашифруем сертификат

Мой домен (пример): mydomain.eu синхронизирован с моим динамическим IP-адресом с помощью np-ip.
У меня есть веб-сервер, прослушивающий порт 80/443, и я получил новый групповой сертификат от 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 WebServer:

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;
}

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

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

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

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

--- изменить - 19 января 2020 г .: 22:40 CET ---

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

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

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

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