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 попросит ввести дополнительные параметры – их нужно будет ввести только однажды.
Comments: