Установка бесплатного SSL wildcard сертификата Let’s Encrypt на CentOS 7 и автоматизация его обновлений

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. В общем все это будет выглядеть как то так:

Let's Encrypt certbot

Стоит отметить что после обновления записей DNS перед продолжением нужно выждать 2-5 минут (возможно дольше) что бы запись распространилась.

Установка бесплатного SSL wildcard сертификата Let's Encrypt на CentOS 7 и автоматизация его обновлений
TXT запись _acme-challenge в DNS

После того как 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

На выходе получим что то вроде этого:

Установка бесплатного SSL wildcard сертификата Let's Encrypt на CentOS 7 и автоматизация его обновлений
Проверка записей с помощью dig

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.

Установка бесплатного SSL wildcard сертификата Let’s Encrypt на CentOS 7 и автоматизация его обновлений
5 (100%) 2 vote[s]

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