Настройка безопасного использования letsencrypt nginx dokcer

24. марта 2016 docker 0

Сейчас мало кто не знает о кампании letsencrypt, и бесплатных сертификатах. Меня по началу смутило что необходимо запустить скрипт от рута, который крайне дружелюбно влезет в конфиг веб сервера и после проверки вставит сертфикат куда посчитает нужным. Кроме того для проверки домена ему потребуется доступ к рутовой директории с файлами сайта.  Однако при первом занкомстве оказалось что все не так страшно и выход из положения долго искать не нужно. Скрипт можно запускать от не привелигированного пользователя, а конфиг веб сервера вообще не нужно трогать лапками letsencrypt. Кроме того если тревога осталась — можно запускать скрипт внутри изолированного контейнера, но это имхо уже лишнее.

Покажу на примере docker  контейнера с стандартным сайтом на 80м порту. Нам нужно создать папку в которую letsencrypt положит файл проверки, прокинуть ее в контейнер с внешним балансером nginx. Создать пользователя от которого будет работать скрипт letsencrypt и поменять права на соответствующие папки.

Поехали. От рута:

Если в вашем дистрибутиве нету такого — то клонируем репу и продолжаем работать локально

Меняем конфиг docker-compose для nginx, добавляем volumes:

После добавляем в nginx location:

Будте внимательны, если у Вас на 80м порту нет ничего кроме редиректа на https следите чтобы location / существовал.

И от пользователя:

Если все сделали правильно — увидите сообщение об успехе. Добавляем поддержку https в наш домен:

 

 

Релоадим nginx  и наслаждаемя зеленым цветом сертификата выданного на 3 месяца.

Ставим в cron задачу по апдейту сертификатов раз в месяц.

Или при работе с git клоном

На этом все. Оглядываемся на 15 минут назад, понимаем насколько удобный продукт сделали letsencrypt. Посылаем им лючи добра, а о новом тренде рассказываем друзьям и знакомым :)

 


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.