Как обновить certbot без остановки веб-сервера?

Вопрос или проблема

Добрый день,

У меня проблема с обновлением домена с помощью certbot. Вот ошибка, которую я получаю:

root@mywebserver:~# certbot renew
Сохранение отладочного лога в /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Обработка /etc/letsencrypt/renewal/mywebsite.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Обновление существующего сертификата для mywebsite.com и www.mywebsite.com
Не удалось обновить сертификат mywebsite.com с ошибкой: Не удалось привязать TCP порт 80, так как он уже используется другим процессом в этой системе (таким как веб-сервер). Пожалуйста, остановите соответствующую программу и попробуйте снова.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Все обновления не удались. Следующие сертификаты не удалось обновить:
  /etc/letsencrypt/live/mywebserver.com/fullchain.pem (неудача)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 неудача обновления, 0 неудач парсинга

В настоящее время я запускаю экземпляр WordPress с приложением OpenLiteSpeed WordPress One-Click, которое должно автоматически обновлять сертификаты для меня, но этого не происходит.

Образ идет с автоматическим обновлением сертификата по умолчанию в /etc/cron.d/certbot:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew  --deploy-hook "systemctl restart lsws"
0 0 * * 3 root systemctl restart lsws

Я имею в виду, конечно, я могу остановить свой веб-сервер и продолжить процесс обновления certbot, но тогда я не смогу это исправить и пройти через все это снова, как только сертификат снова истечет.

Большое спасибо заранее всем, кто поможет мне с этим.

Образ идет с автоматическим обновлением сертификата по умолчанию в /etc/cron.d/certbot:

Тогда это субоптимальный образ. Когда вы смотрите, что пакеты certbot для обычных дистрибутивов Linux устанавливают, это обычно unit systemd.timer. Что, откровенно говоря, имеет больше смысла, чем вызывать systemd в длинной записи crontab.

Я бы просто честно скопировал это. Посмотрите на этот ответ-ссылку с ссылкой, откуда вы можете получить пакет debian, содержащий этот таймер (если ваш образ его не содержит).

certbot renew может (и будет) сам изменять конфигурацию вашего веб-сервера для проверки, перезагружать ваш веб-сервер, проводить проверку, отменять изменение и перезагружать его.

Ответ или решение

Как обновить сертификат с помощью Certbot без остановки веб-сервера

Обновление сертификатов является критически важной задачей для обеспечения безопасности вашего сайта, особенно когда дело касается веб-приложений, таких как WordPress. Ваша проблема заключается в том, что Certbot не может обновить сертификат, поскольку порт 80 уже занят работающим веб-сервером. В данной статье мы постараемся подробно рассмотреть, как можно обновить сертификат без необходимости останавливать ваш OpenLiteSpeed веб-сервер.

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

При попытке выполнить команду certbot renew, вы столкнулись с ошибкой, которая указывает на то, что порт 80, необходимый для процессинга вызовов HTTP, занят. Это распространенная проблема, когда веб-сервер использует стандартный HTTP-порт, и Certbot не может получить к нему доступ для верификации домена. Тем не менее, Certbot умеет менять конфигурации веб-серверов и перезапускать их без остановки, что и будет нашей целью.

Решение проблемы с помощью Certbot

  1. Используйте плагин для автоматической верификации
    Certbot предоставляет несколько плагинов для автоматизации процесса верификации. Рекомендуется использовать плагин webroot, который позволяет Certbot выполнять верификацию через ваш текущий веб-сервер, не требуя его остановки. Убедитесь, что в вашей конфигурации Certbot используется правильное указание на корневую папку вашего сайта. В вашем случае команда для обновления может выглядеть следующим образом:

    certbot renew --webroot -w /var/www/mywebsite.com -d mywebsite.com -d www.mywebsite.com
  2. Настройка конфигурации автоматического обновления через cron
    Чтобы избежать повторения проблем в будущем, подумайте о том, чтобы изменить ваш cron расписание для автоматического обновления сертификатов. Убедитесь, что у вас настроена команда, которая будет использовать необходимые параметры, например:

    0 */12 * * * root certbot renew --webroot -w /var/www/mywebsite.com --quiet --deploy-hook "systemctl reload lsws"

    Здесь ключ --quiet отвечает за минимизацию выводимой информации, а --deploy-hook перезагружает ваш веб-сервер после успешного обновления сертификатов.

  3. Проверка конфигурации и логов
    Практически важно проверять логи Certbot для выявления ошибок и подтверждения успешного обновления сертификата. Логи хранятся по адресу /var/log/letsencrypt/letsencrypt.log. Регулярно просматривайте эти логи и следите за появлением ошибок.

  4. Обновление Certbot и системных пакетов
    Убедитесь, что ваша версия Certbot обновлена до последней версии, так как это может повлиять на функциональность и исправления ошибок. Используйте команды:

    apt-get update && apt-get upgrade certbot

Заключение

Обновление сертификатов с использованием Certbot не обязательно должно мешать работе вашего веб-сервера. С помощью плагина webroot и правильной конфигурации cron, вы можете обеспечить бесшовное обновление сертификатов, что улучшит как пользовательский опыт, так и безопасность вашего веб-приложения. Всегда следите за статусом обновлений и корректностью конфигураций, чтобы избежать проблем в будущем.

Надеемся, что данная информация окажется полезной, и ваши сертификаты будут обновляться без каких-либо затруднений.

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

Капча загружается...