Сертификаты Let’s Encrypt прочно вошли в нашу повседневную деятельность. Как и утилита для их получения и продления – Certbot.
Для работы с сертификатами у Certbot есть различные плагины, самый известный из которых webroot, но он требует предварительного созданий структуры данных и настройки веб-сервера.
Но если вы используете Apache или Nginx, то есть способ проще – использовать одноименные плагины, работу с которыми мы сейчас разберем.
Прежде всего следует получить последнюю версию Certbot, которые теперь распространяются в виде snap-пакетов.
Если Certbot был уже установлен, то его следует удалить:
apt remove certbot
Теперь добавим поддержку Snap (в Ubuntu уже присутствует):apt install snapd
И сразу обновите ядро snap для получения последней версии оснастки:snap install core
Теперь можно установить Certbot:snap install --classic certbot
После установки сделайте символьную ссылку на обычное расположение бинарника:ln -s /snap/bin/certbot /usr/bin/certbot
Теперь можно воспользоваться предоставляемыми Certbot возможностями.Самый простой режим – автоматический, в нем утилита не только получит сертификаты, но и сама настроит веб-сервер:
certbot --apache|nginx
Но это подходит только для «самых маленьких», более-менее опытный администратор предпочтет сам настроить конфигурацию веб-сервера, в этом случае можно только получить сертификаты:certbot certonly --apache|nginx
При запуске в этом режиме Certbot выведет вам список всех обнаруженных в конфигурации веб-сервера доменов и предложит указать те, для которых вы хотите получить сертификат. Вы можете как получить один сертификат для всех, так и отдельные для каждого домена, в этом случае вам придется запустить Certbot несколько раз и каждый раз указать нужные домены.
Также можно пропустить этот этап явно указав их при запуске утилиты:
certbot certonly --apache|nginx -d example.com -d www.example.com
В остальном работа с сертификатами ничем не отличается от привычного webroot, только сам процесс получения становится проще, вам не нужно ничего предварительно настраивать.После получения сертификатов и настройки сайтов проверим возможность их продления:
certbot renew --dry-run
Самим процессом продления занимается планировщик вашего дистритбутива, в современных дистрибутивах это systemd. Получим список таймеров:
systemctl list-timers
И найдем в списке таймер связанный с certbot, в Ubuntu он называется snap.certbot.renew.timer И проверим его статус командой:
systemctl status snap.certbot.renew.timer
Таймер должен находиться в состоянии Активен (Ожидание) и будет указано время до следующего запуска. Напоследок не забудьте добавить в настройки продления в файле /etc/letsencrypt/renewal/example.com.conf (имя файла настройки соответствует первому указанному домену из списка доменов сертификата) в секцию [renewalparams] строку:
renew_hook = systemctl reload apache2|nginx
Для перезапуска веб-сервера после продления сертификата.