Вопрос или проблема
Добрый день,
У меня проблема с обновлением домена с помощью 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
-
Используйте плагин для автоматической верификации
Certbot предоставляет несколько плагинов для автоматизации процесса верификации. Рекомендуется использовать плагинwebroot
, который позволяет Certbot выполнять верификацию через ваш текущий веб-сервер, не требуя его остановки. Убедитесь, что в вашей конфигурации Certbot используется правильное указание на корневую папку вашего сайта. В вашем случае команда для обновления может выглядеть следующим образом:certbot renew --webroot -w /var/www/mywebsite.com -d mywebsite.com -d www.mywebsite.com
-
Настройка конфигурации автоматического обновления через cron
Чтобы избежать повторения проблем в будущем, подумайте о том, чтобы изменить вашcron
расписание для автоматического обновления сертификатов. Убедитесь, что у вас настроена команда, которая будет использовать необходимые параметры, например:0 */12 * * * root certbot renew --webroot -w /var/www/mywebsite.com --quiet --deploy-hook "systemctl reload lsws"
Здесь ключ
--quiet
отвечает за минимизацию выводимой информации, а--deploy-hook
перезагружает ваш веб-сервер после успешного обновления сертификатов. -
Проверка конфигурации и логов
Практически важно проверять логи Certbot для выявления ошибок и подтверждения успешного обновления сертификата. Логи хранятся по адресу/var/log/letsencrypt/letsencrypt.log
. Регулярно просматривайте эти логи и следите за появлением ошибок. -
Обновление Certbot и системных пакетов
Убедитесь, что ваша версия Certbot обновлена до последней версии, так как это может повлиять на функциональность и исправления ошибок. Используйте команды:apt-get update && apt-get upgrade certbot
Заключение
Обновление сертификатов с использованием Certbot не обязательно должно мешать работе вашего веб-сервера. С помощью плагина webroot
и правильной конфигурации cron, вы можете обеспечить бесшовное обновление сертификатов, что улучшит как пользовательский опыт, так и безопасность вашего веб-приложения. Всегда следите за статусом обновлений и корректностью конфигураций, чтобы избежать проблем в будущем.
Надеемся, что данная информация окажется полезной, и ваши сертификаты будут обновляться без каких-либо затруднений.