Проблема обновления сертификатов в Certbot – исправление

Let's encrypt SSL

SSL-сертификаты от Let'sEncrypt достаточно популярны – они бесплатные и их можно обновлять автоматически. Но в последнее время периодически возникает проблема с их обновлением. Пробуем исправить.

Проблема обновления сертификатов проявляется только на VPS, на обычном хостинге её не бывает. Суть в том, что при попытке получить/обновить сертификат мы получаем сообщение:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certbot doesn't know how to automatically configure the web server on this system. However, it can still get a certificate for you. Please run "certbot certonly" to do so. You'll need to manually configure your web server to use the resulting certificate.

Ещё один нехороший момент в том, что при попытке выполнить рекомендуемую команду certbot certonly мы тоже не получим сертификаты. Причина достаточно простая.

Причина проблемы

Суть в том, что до относительно недавнего времени приложение certbot не входило в состав дистрибутивов Linux. Его надо было устанавливать из PPA-репозитория Let'sEncrypt. И в пакете, собранном Let'sEncrypt, зависимости были указаны правильно. То есть, при установке пакета certbot дополнительно устанавливались все необходимые для его работы пакеты. А при попытке удалить один из таких пакетов выводилось предупреждение, что дополнительно будут удалены и другие пакеты.

Сейчас в пакете, имеющемся в репозиториях Ubuntu 20.04, такой зависимости нет. Именно поэтому и возникает проблема обновления сертификатов - из-за отсутствия одного-двух пакетов невозможно получить сертификаты из сети.

А раз причина известна, её можно легко исправить.

Исправление

Для начала надо знать, какой веб-сервер используется в нашем случае - Nginx или Apache. Для этого проверяем, что установлено (пример для Ubuntu):

aptitude search nginx
aptitude search apache

Смотрим, какая буква находится в первом столбце в строках с названием пакета «nginx» и «apache2». Если это «i», значит, соответствующий сервер установлен. Когда веб-сервер установлен только один, он и работает. Если же установлены оба, может работать как любой один из них, так и оба в паре. В этом случае проверяем состояние:

service nginx status
service apache2 status

После этого вводим команду:

aptitude search certbot

Результатов будет немного, их можно изучить быстро. Смотрим, установлены ли пакеты для соответствующего запущенного сервера – python3-certbot-nginx и python3-certbot-apache. С большой вероятностью они отсутствуют именно из-за отсутствия нужной зависимости.

Устанавливаем пакеты вручную. Для nginx:

apt install python3-certbot-nginx

Для Apache:

apt install python3-certbot-apache

После этого получение сертификатов должно заработать. Возможно, при запуске certbot попросит ввести дополнительные параметры – их нужно будет ввести только однажды.

Комментарии:

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

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