Оглавление
1. Получение сертификата
Для установки wildcard сертификата letsencrypt воспользуемся утилитой certbot
.
Стоит оговориться что для получения wildcard сертификата, подтверждение владения доменом возможно только через TXT
запись в DNS.
yum install certbot
Затем :
certbot -d *.grib69.ru --manual --preferred-challenges dns certonly --server https://acme-v02.api.letsencrypt.org/directory
После этого нам зададут пару вопросов: email куда будут приходить уведомления о заканчивающемся сроке действия сертификата и предложат добавить TXT запись _acme-challenge
в DNS.
В общем все это будет выглядеть как то так:
Стоит отметить что после обновления записей DNS перед продолжением нужно выждать 2-5 минут (возможно дольше) что бы запись распространилась.
После того как certbot
отработал, полученные сертификаты будут находиться здесь:
/etc/letsencrypt/live/grib69.ru
Здесь будут файлы cert.pem, chain.pem, fullchain.pem, rivkey.pem, README
После установки сертификата на сервер nginx обнаружил что забыл добавить сертификат корневого домена )) Сертификат *.grib69.ru
естественно не подходит для grib69.ru
. Пришлось еще раз проделать данную процедуру с уже добавленным корневым доменом:
certbot -d grib69.ru -d *.grib69.ru --manual --preferred-challenges dns certonly --server https://acme-v02.api.letsencrypt.org/directory
Здесь нас уже спрашивают “Мы хотим расширить существующий сертификат и заменить его новым?” (Do you want to expand and replace this existing certificate with the new certificate?
) и после получения утвердительного ответа предлагает нам добавить вторую TXT запись _acme-challenge в DNS.
В общем добавляем, снова ждём пару минут и продолжает нажатием ENTER.
К слову, проверить разошлась ли запись можно командой dig, например так:
dig @8.8.8.8 -t txt _acme-challenge.grib69.ru
На выходе получим что то вроде этого:
2. Настройка автопродления сертификатов
Тут всё просто, точнее даже очень просто.
Создаем исполняемый bash скрипт следующего содержания:
#!/bin/bash /usr/bin/certbot renew --post-hook "service nginx reload"
и размещаем его по пути: /etc/cron.weekly
В результате каждую неделю скрипт будет запускаться и проверять необходимость обновления сертификатов. В случае такой необходимости сертификаты автоматически будут обновлены и будет запущен хук обновляющий конфигурацию сервера nginx (в моём случае)
Обновление от 01.05.2019
Когда настал срок обновления сертификата, то он не обновился, вылезла следующая ошибка: “PluginError: An authentication script must be provided with –manual-auth-hook when using the manual plugin non-interactively.“
Как решить проблему и всё таки настроить автоматическое обновление сертификата читаем здесь: Автоматизация обновлений wildcard сертификата от Let’s Encrypt.
Leave a Comment