Сначала верните сайт в рабочее состояние: что делать, если истёк SSL-сертификат. Эта страница о том, почему не сработало автопродление и как сделать, чтобы это не повторилось.
Где продлевается ваш сертификат
- Обычный хостинг с панелью (ISPmanager, cPanel, Plesk, своя панель хостинга). Сертификат выпускает и продлевает панель, обычно за этим следит галочка «Автопродление» или «Let's Encrypt» у домена.
- Свой VPS или выделенный сервер. Продлевает программа на сервере, чаще всего certbot или acme.sh. Она запускается по расписанию: таймером systemd или через cron.
- CDN или защита от атак перед сайтом. Посетители видят сертификат, который выдаёт CDN. Продление идёт в кабинете CDN, а сертификат на самом сервере отвечает только за связь CDN с сайтом.
Если не знаете, какой вариант у вас, откройте сайт и посмотрите в браузере, кем выдан сертификат. Ещё проще воспользоваться проверкой сайта: она покажет срок и издателя.
Шаг 1. Панель хостинга
- Найдите раздел SSL-сертификатов в панели и сертификат вашего домена.
- Посмотрите статус и текст ошибки последнего продления. Панели обычно пишут причину: домен не указывает на этот сервер, проверка не прошла, превышен лимит выпусков.
- Проверьте, что сертификат выпущен на оба адреса, с
wwwи без, и что домен привязан именно к этому сайту, а не к старой копии. - Включите автопродление, если оно выключено, и перевыпустите сертификат вручную.
Не хотите разбираться сами? Пришлём оценку в часах до начала работы, первая задача до 2 часов бесплатно.
Отправить задачуШаг 2. Свой сервер: certbot и таймер
Подключитесь к серверу по SSH и выполните команды от администратора.
certbot certificatesПокажет все сертификаты, домены в них и дату окончания. Если нужного домена нет в списке, сертификат выпускали другой программой или на другом сервере.
certbot renew --dry-runПробное продление без замены сертификата. Если оно падает, certbot напишет причину: чаще всего это ошибка проверки домена (шаг 3).
systemctl list-timers | grep certbotПокажет, когда таймер продления запускался и когда запустится снова. Если строки нет, расписание не настроено. При установке через пакет таймер называется certbot.timer, при установке через snap — snap.certbot.renew.timer. На старых серверах вместо таймера бывает задача в cron: проверьте crontab -l и папку /etc/cron.d/.
Если сертификаты выпускает acme.sh, список с датами покажет acme.sh --list, а расписание стоит в crontab -l у пользователя, от которого он установлен.
Сертификат может продлиться, а сайт всё равно отдаёт старый: веб-сервер не перечитал файлы. В certbot для этого есть хук --deploy-hook "systemctl reload nginx" (или apache2). Проверьте его в /etc/letsencrypt/renewal/имя-домена.conf.
Шаг 3. Проверка домена не проходит
Перед выдачей Let's Encrypt проверяет, что домен ваш. Обычно по HTTP: запрашивает файл по адресу http://ваш-домен/.well-known/acme-challenge/…. Проверка не проходит, если:
- A-запись домена указывает на другой сервер. Типично после переноса: сайт уже на новом хостинге, а сертификат продлевает старый, или наоборот. Сверьте IP в DNS с IP сервера, где идёт продление. Подробнее в разборе сайт не открывается после переноса.
- Путь
/.well-known/acme-challenge/закрыт или уходит в редирект. Правила в.htaccessили конфиге nginx, плагины безопасности и редирект на другой домен могут не пропустить запрос. Редирект с HTTP на HTTPS проверке не мешает, а запрет доступа или редирект на чужой домен мешает. - Перед сайтом стоит CDN. Запрос уходит в CDN, а не на ваш сервер. Либо продлевайте сертификат в CDN, либо используйте проверку через DNS-запись.
- Есть AAAA-запись (IPv6) на старый или неработающий адрес. Let's Encrypt может проверять по IPv6. Удалите запись или настройте сайт и на IPv6.
Проверка через DNS (DNS-01) не зависит от сервера и редиректов. Для автоматического продления она требует доступа программы к API DNS-провайдера.
Шаг 4. Как не допустить в следующий раз
- Следите за сроком сертификата отдельно от продления: если автопродление снова сломается, вы узнаете об этом заранее. В кабинете Fixly на карточке сайта видны сроки домена и сертификата: за 30 дней до конца срок подсвечивается, и прямо оттуда можно поставить задачу на продление.
- После переноса сайта или смены CDN проверьте, где теперь продлевается сертификат, и выполните пробное продление.
- Время от времени проверяйте сайт проверкой сайта: срок сертификата там виден сразу.
Когда нужен специалист
- Нет доступа к серверу по SSH или непонятно, где именно продлевается сертификат.
- Пробное продление падает с ошибкой, которую не получается разобрать.
- Сайт за CDN или на нескольких серверах, и нужна проверка через DNS.
Сколько стоит у нас
| Задача | Время | Стоимость |
|---|---|---|
| Настройка сервера или VPS | 2–4 ч | от 7 600 ₽ |
| Исправление ошибки | 1–2 ч | 3 800–7 600 ₽ |
Диапазоны ориентировочные, ставка 3 800 ₽ в час. Точную оценку присылаем до начала работ. Все цены.
Опишите проблему в форме. Пришлём оценку в часах до начала работы, первая задача до 2 часов бесплатно для новых клиентов.
Отправить задачуЧастые вопросы
Почему сертификат действует всего 90 дней?
Так устроен Let's Encrypt: короткий срок снижает риск, если ключ утечёт, и заставляет автоматизировать продление. Продление обычно запускается за 30 дней до конца, поэтому при исправной настройке срок никогда не подходит к нулю.
Можно купить платный сертификат на год и забыть?
Можно, но его тоже нужно продлевать и устанавливать заново каждый год, и о нём тоже забывают. Надёжнее настроенное автопродление плюс контроль срока.
Сертификат продлился, а браузер всё равно пишет про истёкший срок
Веб-сервер продолжает отдавать старый файл, пока его не перезапустят или не перечитают настройки. Либо сайт отдаёт сертификат с другого сервера или CDN. Смотрите конец шага 2 и шаг 3.