blog.cat.ssl

Автоматическое продление SSL: настройка cron для certbot renew — пошаговое руководство

05.06.2035
← Все статьи

Сертификаты Let's Encrypt имеют срок действия всего три месяца, что заметно меньше коммерческих аналогов. Этот короткий срок выбран намеренно — он повышает безопасность, но требует обязательной автоматизации продления. Любая попытка обновлять сертификаты вручную рано или поздно заканчивается забытым доменом и красной плашкой "небезопасное соединение" в браузере. Команда Sayt.uz видит подобные ситуации еженедельно у клиентов, переезжающих с других площадок, и всегда первым делом настраивает cron.

Как работает команда certbot renew

Утилита certbot самостоятельно проверяет срок действия всех установленных сертификатов и обновляет только те, у которых до истечения осталось менее тридцати дней. Это поведение жёстко зашито в логику программы и его не нужно дополнительно настраивать. Если запустить команду каждый день, она не будет каждый раз обращаться к серверам Let's Encrypt — это снижает нагрузку и исключает риск превысить лимит запросов. Лимит составляет пятьдесят сертификатов на домен в неделю, и нарушить его очень легко при неправильной настройке скриптов.

Правильная настройка cron-задания

Существует два подхода к настройке cron: через crontab пользователя или через файл в директории /etc/cron.d. Мы рекомендуем второй вариант, потому что отдельный файл проще переносить между серверами и его сложнее случайно удалить. Создайте файл /etc/cron.d/certbot-renew со строкой "0 2,14 * * * root certbot renew --quiet --deploy-hook 'systemctl reload nginx'". Двойной запуск в сутки официально рекомендован Let's Encrypt и страхует от ситуации, когда сервер был выключен в момент очередной попытки обновления.

Зачем нужен deploy-hook

После получения нового сертификата веб-сервер продолжает использовать старый файл, который уже загружен в память. Параметр --deploy-hook запускает указанную команду только тогда, когда сертификат действительно был обновлён, а не каждый раз при проверке. Это важная деталь, которую упускают многие администраторы и в результате перезагружают Nginx по несколько раз в день без необходимости. Для Apache используется команда systemctl reload apache2 или httpd в зависимости от дистрибутива, а для почтовых серверов Postfix и Dovecot нужны отдельные перезагрузки.

Мониторинг и оповещения

Главная опасность автоматизации — это её прозрачность: вы не замечаете, когда что-то ломается. Мы рекомендуем перенаправлять вывод certbot в файл журнала и периодически его проверять. Ещё более надёжный способ — добавить директиву MAILTO в начало cron-файла и получать письма при каждом выполнении. Современный вариант — отправка уведомлений в Telegram через --post-hook с вызовом curl к Bot API. Так администратор получает мгновенное оповещение прямо в мессенджер и может оперативно реагировать на сбои продления.

Практика Sayt.uz

На хостинге Sayt.uz автоматическое продление Let's Encrypt настроено по умолчанию для 92 процентов клиентов. Услуга входит в базовую стоимость хостинга и не требует от пользователя никаких действий. Для wildcard-сертификатов автообновление настраивается отдельно через DNS-валидацию, и его стоимость составляет 290 000 сум в год. Корпоративные клиенты с коммерческими сертификатами получают уведомления о необходимости продления за 60 дней через Telegram и электронную почту, что позволяет планировать оплату и избегать простоев.

Похожие статьи

📱 SSL pinning: самая надежная защита мобильных приложений от MITM-атак 🤝 Процесс SSL handshake: внутренняя механика TLS-рукопожатия по этапам 🔓 Пропал зеленый замок HTTPS: причины и пошаговое исправление Мониторинг срока действия SSL: системы оповещений и автоматические проверки
🌐 Язык
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English