Как мне создать SSL-сертификат моего домена, включая www, с помощью docker-nginx-certbot?

#docker #nginx #docker-compose #certbot

#docker #nginx #docker-compose #certbot

Вопрос:

Я обслуживаю веб-сайт с использованием nginx через docker compose, используя этот контейнер.

Если я следую инструкциям, контейнер генерирует только SSL-сертификат, который я указываю в nginx .conf

 ssl_certificate     /etc/letsencrypt/live/www.devenv.ai/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.devenv.ai/privkey.pem;
 

но не для devenv.ai . Как мне заставить контейнер автоматически создавать сертификат для обоих www.devenv.ai и devenv.ai ?

Ответ №1:

Вам нужно прочитать объяснение того, как letsencrypt генерируется сертификат.

Один из подходов заключается в получении подстановочного сертификата для devenv.ai , но это вопрос для системных администраторов и выходит за рамки stackowerflow, поэтому вы можете исследовать суперпользователя, ошибку сервера или спросить Ubunty.

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

Это означает, что вам необходимо:

  1. Установите DNS для обоих имен так, чтобы они указывали на один и тот же IP-адрес. Использование псевдонима для www.devenv.ai указания на devenv.ai было бы хорошим подходом.
  2. Создайте 2 конфигурации сервера в nginx контейнере, для каждого домена отдельно. С указанным вами контейнером проще всего иметь 2 отдельных файла конфигурации в conf.d . Таким образом, у вас будет 2 домена, работающих на nginx, и вы можете решить либо сохранить их оба, либо перенаправить один из них на другой.

Это может быть распространено на несколько доменов, просто добавив файлы конфигурации.