Главная/Разработка/Certbot
Установка Certbot и сертификат Let's Encrypt для сайта
Установка Certbot нужна, чтобы получить бесплатный сертификат Let's Encrypt для Nginx или Apache и не следить за его сроком: программа подтверждает, что домен ваш, кладёт сертификат в /etc/letsencrypt/live и продлевает его по таймеру. Для работы нужны домен, указывающий на сервер, и порт 80, открытый из интернета.
Ответ за 30 секунд
Для Nginx или Apache ставьте Certbot из snap и запускайте certbot --nginx: сертификат появится в /etc/letsencrypt/live, продлением займётся таймер. Сразу после выпуска выполните certbot renew --dry-run, чтобы узнать о сломанном продлении сегодня, а не в день, когда в браузере появится ошибка.
Порт 80 и порт 443 открыты сразу: поднимите сервер, направьте домен и получите сертификат за несколько минут.
Ошибки Certbot: порт 80, DNS и лимиты Let's Encrypt80порт проверки домена
2 раза в суткизапуск продления по таймеру
1/3срока в остатке: порог продления
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#
- Направьте A-запись домена на IP сервера и откройте порты 80 и 443:
sudo ufw allow 80,443/tcp. - Поставьте Certbot через snap: этот способ рекомендует сам проект, в нём всегда свежая версия.
- Запустите плагин веб-сервера: 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, с небольшой случайной паузой.
- Найдите таймер:
systemctl list-timers | grep certbot. - Прогоните продление вхолостую:
sudo certbot renew --dry-run. Команда ходит на тестовый сервер Let's Encrypt и ничего не сохраняет. - Посмотрите даты:
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: NXDOMAIN | A-запись не создана, в имени опечатка или DNS не обновился | dig +short домен должен вернуть IP сервера |
| Problem binding to port 80 | Режим standalone, а порт занят работающим Nginx | Используйте --nginx или --webroot, либо остановите сервер хуками |
| too many requests, rate limit | Слишком частые попытки выпуска | Отлаживайте с --dry-run или --staging и ждите окончания лимита |
Отдельная ловушка: если у домена есть запись AAAA, проверка может пойти по IPv6. Убедитесь, что сервер отвечает и по ней, либо удалите лишнюю запись. Выберите способ выпуска под вашу схему, а потом перейдите к командам:
Какой способ выпуска сертификата выбрать
Три ответа, и подсказка назовёт команду Certbot
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.
Запустите свой сервер за пару минут
Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.
- NVMe-диски и гарантированная доля процессора
- Root-доступ и любой софт, от Docker до игровых серверов
- Маркетплейс: 91 приложение в один клик
- Бесплатный перенос проекта силами специалистов