Проверено на сервере 5 октября 2026 года на Ubuntu 26.04: установка certbot и проверка автопродления выполнены. Сам выпуск сертификата на тестовом сервере не проверялся: для него нужен домен.
Что такое сертификат Let’s Encrypt
SSL-сертификат включает HTTPS: соединение между браузером и сайтом шифруется, в адресной строке появляется замок. Let’s Encrypt выпускает такие сертификаты бесплатно и автоматически. Сервис работает для любого домена, на который у вас есть права, то есть который вы можете направить на свой сервер.
Сертификат выдаётся на ограниченный срок. По FAQ Let’s Encrypt на момент проверки это 90 дней, а продлевать рекомендуют каждые 60 дней. Срок нельзя изменить по запросу. Правила выпуска со временем меняются, поэтому актуальное значение смотрите на letsencrypt.org.
Короткий срок не проблема, если настроено автопродление. Certbot ставит его сам, ниже покажем, как проверить.
Что нужно до начала
- VPS с Ubuntu 24.04 или 26.04, вход по SSH и пользователь с правом
sudo. Если сервер ещё не настроен, начните со статьи Первая настройка VPS на Ubuntu и Подключение к VPS по SSH. - Домен, у которого в DNS есть запись A (адрес IPv4 вашего сервера). Если запись только что изменена, подождите: пока она не разошлась, проверка не пройдёт.
- Установленный и работающий nginx, в конфигурации которого прописан ваш домен (
server_name example.ru www.example.ru;). - Открытые порты 80 и 443 в файрволе. Let’s Encrypt проверяет, что домен ваш, обращаясь к сайту по порту 80.
Если домен не указывает на сервер, certbot завершится ошибкой проверки. Сначала настройте DNS, потом выпускайте сертификат.
Установка certbot для nginx
Ниже шаги из инструкции certbot.eff.org для nginx через snap. На образах Ubuntu от хостеров snap часто не установлен, поэтому сначала поставьте его:
sudo apt install snapd
Команда ставит службу snapd, через которую устанавливаются snap-пакеты. Если она уже есть, apt сообщит об этом и ничего не изменит.
Если ранее ставили certbot из apt, уберите его, чтобы не было конфликта:
sudo apt-get remove certbot
Установите certbot как snap-пакет:
sudo snap install --classic certbot
Сделайте команду certbot доступной во всей системе:
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
Выпустите сертификат и позвольте certbot самому поправить конфигурацию nginx:
sudo certbot --nginx
Команда спросит email (на него придут предупреждения, если продление не сработает), попросит принять условия и предложит выбрать домены из конфигурации nginx. Ответьте на вопросы, и certbot получит сертификат и добавит в конфиг HTTPS.
Если хотите сами вписать пути к сертификату в конфиг, выпустите только сертификат:
sudo certbot certonly --nginx
После этого откройте https://ваш-домен/ и убедитесь, что в адресной строке есть замок.
Что делать, если certbot выдал ошибку
Чаще всего причина в одном из четырёх мест.
- DNS. Выполните
dig +short example.ru(замените на свой домен): команда покажет IP, на который указывает домен. Он должен совпадать с адресом вашего сервера. Еслиdigне установлен, поставьтеsudo apt install dnsutils. - Порт 80. Если включён файрвол ufw, откройте порты командой
sudo ufw allow 'Nginx Full': она разрешает HTTP и HTTPS для nginx. - Конфигурация nginx. Проверьте её командой
sudo nginx -t: она сообщает об ошибках синтаксиса, не перезапуская сервер. - Лимиты Let’s Encrypt. У сервиса есть ограничения на число выпусков для одного домена за период. При многократных неудачных попытках используйте
--dry-run, он выпускает сертификат на тестовом сервере с более мягкими лимитами.
Если на сервере работает Docker с собственным прокси, порты 80 и 443 могут быть заняты им, и nginx их занять не сможет.
Где лежат сертификаты
Certbot сохраняет файлы в папке /etc/letsencrypt/live/ваш-домен/. Там два главных файла: fullchain.pem (сертификат с цепочкой) и privkey.pem (закрытый ключ). Закрытый ключ никому не передавайте и не кладите в репозиторий.
Посмотреть сроки действия всех сертификатов на сервере можно командой:
sudo certbot certificates
Она выводит список сертификатов, домены и дату окончания срока.
Автопродление и его проверка
Certbot при установке создаёт задание, которое проверяет сертификаты и продлевает те, срок которых подходит к концу. Это таймер systemd или запись cron, зависит от способа установки. Посмотреть таймеры можно так:
systemctl list-timers
Проверьте, что продление сработает, не трогая настоящий сертификат:
sudo certbot renew --dry-run
Команда выполняет пробное продление на тестовом сервере Let’s Encrypt. Если в конце нет ошибок, автопродление настроено. Повторите проверку после любых изменений в nginx или DNS.
Типичные причины сбоя: домен перестал указывать на сервер, закрыт порт 80, в nginx убрали нужный server_name.
Альтернатива: веб-сервер Caddy
Caddy сам получает и продлевает сертификаты для доменов, которые указаны в его конфигурации. Ставить certbot и запускать команды не нужно. Условия те же: домен указывает на сервер, порты 80 и 443 открыты.
Минимальный файл /etc/caddy/Caddyfile для сайта из папки /var/www/site:
example.ru {
root * /var/www/site
file_server
}
После запуска Caddy сам обратится к бесплатному центру сертификации (по документации Caddy это Let’s Encrypt или ZeroSSL) и включит HTTPS. Установку Caddy на Ubuntu описывает официальная документация caddyserver.com. Caddy и nginx одновременно слушают порты 80 и 443, поэтому выбирайте один из них.
Что делать дальше
Если сервера ещё нет, подберите его в подборе VPS: для сайта с сертификатом хватает небольшого тарифа, VPS в нашей базе стоят от 140 ₽ в месяц (цены сверены 5 октября 2026 года). Сайт на WordPress разворачивает инструкция Установка WordPress на VPS, а общий порядок первых шагов описан в Первой настройке VPS.
