Главная/Разработка/Certbot

Установка Certbot и сертификат Let's Encrypt для сайта

Установка Certbot нужна, чтобы получить бесплатный сертификат Let's Encrypt для Nginx или Apache и не следить за его сроком: программа подтверждает, что домен ваш, кладёт сертификат в /etc/letsencrypt/live и продлевает его по таймеру. Для работы нужны домен, указывающий на сервер, и порт 80, открытый из интернета.

5 мин чтенияДанные проверены 16 октября 2026

Ответ за 30 секунд

Для Nginx или Apache ставьте Certbot из snap и запускайте certbot --nginx: сертификат появится в /etc/letsencrypt/live, продлением займётся таймер. Сразу после выпуска выполните certbot renew --dry-run, чтобы узнать о сломанном продлении сегодня, а не в день, когда в браузере появится ошибка.

Порт 80 и порт 443 открыты сразу: поднимите сервер, направьте домен и получите сертификат за несколько минут.

Ошибки Certbot: порт 80, DNS и лимиты Let's Encrypt

01 · 1 мин

Что делает Certbot и каким сайтам он нужен#

Certbot это программа Фонда электронных рубежей (EFF), которая общается с Let's Encrypt по протоколу ACME. Она доказывает центру сертификации, что вы управляете доменом, получает сертификат и при желании сама правит конфиг веб-сервера.

Если вы выбрали Caddy или Traefik, Certbot не нужен: они выпускают сертификаты сами. Он пригодится рядом с Nginx и Apache. Способ проверки задаёт плагин:

ПлагинЧто делаетКогда брать
nginx, apacheВыпускает сертификат и правит конфиг сайтаВеб-сервер стоит на самом сервере
webrootКладёт файл проверки в каталог сайта, сервер работаетСвой конфиг нельзя отдавать программе
standaloneСам занимает порт 80 на время проверкиВеб-сервера ещё нет или его можно остановить
DNS и manualПодтверждает домен TXT-записьюWildcard и серверы без порта 80

02 · 1 мин

Установка Certbot на Ubuntu и Debian через snap#

  1. Направьте A-запись домена на IP сервера и откройте порты 80 и 443: sudo ufw allow 80,443/tcp.
  2. Поставьте Certbot через snap: этот способ рекомендует сам проект, в нём всегда свежая версия.
  3. Запустите плагин веб-сервера: Certbot спросит адрес почты, согласие с условиями и нужна ли переадресация с HTTP.
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d app.example.com -d www.app.example.com

Вместо snap подойдёт пакет дистрибутива: sudo apt install certbot python3-certbot-nginx. Версия в нём отстаёт, зато это обычный apt. Для скрипта без вопросов добавьте --non-interactive --agree-tos -m you@example.com --redirect.

Файл в /etc/letsencrypt/live/домен/Для чего
fullchain.pemСертификат с цепочкой: путь для ssl_certificate
privkey.pemЗакрытый ключ: путь для ssl_certificate_key, никому не отдавайте

03 · 1 мин

Как Certbot продлевает сертификат и как это проверить#

Команда certbot renew обходит все сертификаты и обновляет только те, которым пора. По документации Certbot начиная с версии 4.0.0 пора наступает, когда осталось меньше трети срока жизни, раньше порогом служили фиксированные 30 дней. Поэтому запускать продление можно хоть каждый день: лишних выпусков не будет.

Установка через snap или apt сразу добавляет таймер. Документация Certbot в примере с cron запускает продление дважды в сутки, в 00:00 и 12:00, с небольшой случайной паузой.

  1. Найдите таймер: systemctl list-timers | grep certbot.
  2. Прогоните продление вхолостую: sudo certbot renew --dry-run. Команда ходит на тестовый сервер Let's Encrypt и ничего не сохраняет.
  3. Посмотрите даты: sudo certbot certificates покажет срок окончания каждого сертификата.

Если сертификат выпускали режимом webroot или standalone, сервер сам его не перечитает. Положите скрипт с командой systemctl reload nginx в каталог /etc/letsencrypt/renewal-hooks/deploy/: он запускается после успешного продления. Сертификат для HAProxy склеивают из двух файлов, и тоже хуком.

Инструмент · 1 мин

Ошибки Certbot: порт 80, DNS и лимиты Let's Encrypt#

СообщениеПричинаЧто сделать
Timeout during connect (likely firewall problem)Порт 80 закрыт файрволом сервера или панелью провайдераОткройте порт и проверьте адрес с другой машины командой curl -I http://домен/
Invalid response ... 404Приложение или переадресация перехватывает путь /.well-known/acme-challenge/Добавьте отдельный location с корнем для проверки
DNS problem: NXDOMAINA-запись не создана, в имени опечатка или DNS не обновилсяdig +short домен должен вернуть IP сервера
Problem binding to port 80Режим standalone, а порт занят работающим NginxИспользуйте --nginx или --webroot, либо остановите сервер хуками
too many requests, rate limitСлишком частые попытки выпускаОтлаживайте с --dry-run или --staging и ждите окончания лимита

Отдельная ловушка: если у домена есть запись AAAA, проверка может пойти по IPv6. Убедитесь, что сервер отвечает и по ней, либо удалите лишнюю запись. Выберите способ выпуска под вашу схему, а потом перейдите к командам:

Какой способ выпуска сертификата выбрать

Три ответа, и подсказка назовёт команду Certbot

Что принимает запросы на порту 80
Нужен ли wildcard вида *.example.com
Порт 80 доступен из интернета

05 · 1 мин

Certbot в Docker: образ certbot/certbot и общий каталог проверки#

Когда Nginx работает в контейнере, ставить Certbot на хост не обязательно. Образ certbot/certbot запускают разово, а каталоги с сертификатами и проверкой общие с контейнером Nginx. В Nginx добавьте location /.well-known/acme-challenge/ { root /var/www/certbot; }.

docker run --rm \
  -v /etc/letsencrypt:/etc/letsencrypt \
  -v /var/www/certbot:/var/www/certbot \
  certbot/certbot certonly --webroot -w /var/www/certbot \
  -d app.example.com -m you@example.com --agree-tos

Продление: та же команда с аргументом renew вместо certonly, затем docker compose exec nginx nginx -s reload. Запускайте её из cron или таймера systemd на хосте дважды в сутки. Том /etc/letsencrypt входит в копии сервера: порядок описан на странице сервер для бэкапов.

06 · 1 мин

Вопросы об установке Certbot#

Как проверить, что Certbot сам продлит сертификат?

Выполните certbot renew --dry-run: он проверит весь путь продления на тестовом сервере. Наличие таймера видно в systemctl list-timers.

Нужно ли останавливать Nginx при установке Certbot?

Нет, если использовать плагин --nginx или режим webroot. Останавливать сервер приходится только в режиме standalone, которому нужен свободный порт 80.

Как получить wildcard-сертификат через Certbot?

Только с проверкой по DNS: нужен плагин вашего DNS-провайдера или скрипты, которые создают TXT-запись _acme-challenge. Порт 80 для такой проверки не нужен.

Как удалить ненужный сертификат Certbot?

Команда certbot certificates покажет имена, а certbot delete --cert-name имя удалит сертификат и перестанет его продлевать. Конфиг веб-сервера править придётся самому.

Почему этому можно верить

Как мы проверяли

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

Источники цифр на этой странице: VPS и VDS серверы Таймвеб Клауд, timeweb.cloud/services/vds-vps, проверено 14 октября 2026; Маркетплейс приложений Таймвеб Клауд, timeweb.cloud/marketplace, проверено 14 октября 2026; Документация Certbot: руководство пользователя, eff-certbot.readthedocs.io/en/stable/using.html, проверено 15 октября 2026.

SBРедакция SelfBase · обновлено 16 октября 2026

Запустите свой сервер за пару минут

Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.

  • NVMe-диски и гарантированная доля процессора
  • Root-доступ и любой софт, от Docker до игровых серверов
  • Маркетплейс: 91 приложение в один клик
  • Бесплатный перенос проекта силами специалистов
Ошибки