HTTPS для сайта на VPS это базовая гигиена: трафик шифруется, браузер не пугает посетителей предупреждениями, а формы входа, API и оплата работают без сюрпризов. Ниже разберём, как бесплатно выпустить сертификат Let’s Encrypt через Certbot на Ubuntu с Apache или Nginx, включить редирект с HTTP и убедиться, что продление работает само. Это важнее, чем кажется: 7 октября 2026 года Let’s Encrypt объявил, что с 10 февраля 2027 года сертификаты будут жить 64 дня вместо 90.
Что такое Let’s Encrypt и Certbot
Let’s Encrypt это некоммерческий удостоверяющий центр. Сертификаты бесплатные, выпуск и продление идут автоматически по протоколу ACME. Certbot это клиент от EFF: он запрашивает сертификат, сам правит конфиг веб-сервера и ставит таймер на продление. Формально сейчас говорят TLS, но в обиходе по-прежнему чаще «SSL-сертификат».
Что нужно заранее:
- домен (и при желании www), у которого A или AAAA запись указывает на IP вашего VPS;
- SSH-доступ с sudo;
- работающий Apache или Nginx, который отвечает на этом домене по 80-му порту;
- открытые порты 80 и 443 в файрволе.
Пока DNS не смотрит на сервер, проверка домена по HTTP (HTTP-01) не пройдёт.
Установка Certbot
EFF сейчас советует ставить Certbot через snap: так он обновляется сам и всегда свежий. Если стоял старый пакет из apt, его сначала удаляют:
sudo apt remove certbot sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
Вариант из репозитория Ubuntu тоже рабочий, просто версия там старше: sudo apt install certbot python3-certbot-apache для Apache или python3-certbot-nginx для Nginx.
Apache на Ubuntu
sudo certbot --apache # или с явными именами sudo certbot --apache -d example.com -d www.example.com
Certbot спросит почту, согласие с условиями и домены, затем сам поправит виртуальный хост и включит редирект с HTTP на HTTPS. Почта нужна для важных уведомлений, а вот письма о скором окончании сертификата Let’s Encrypt с 4 июня 2025 года {a(LEM,’больше не рассылает’)}, так что следить за продлением придётся самим.
Проверка: откройте https://ваш-домен, сертификат должен быть без предупреждений. Если что-то не так, смотрите лог:
sudo tail -n 100 /var/log/letsencrypt/letsencrypt.log
Nginx на Ubuntu
Перед запуском конфиг Nginx должен проходить проверку nginx -t, а server_name совпадать с доменом:
sudo certbot --nginx # или с явными именами sudo certbot --nginx -d example.com -d www.example.com
Certbot пропишет ssl_certificate и ssl_certificate_key и, если согласиться, добавит редирект на HTTPS. Если не работает:
sudo tail -n 100 /var/log/letsencrypt/letsencrypt.log sudo nginx -t sudo systemctl status nginx
Автопродление и новые сроки
Certbot сам ставит таймер systemd, который продлевает сертификаты заранее. Проверить, что продление сработает, можно без выпуска настоящего сертификата:
sudo certbot renew --dry-run systemctl list-timers | grep certbot
Сроки жизни сертификатов сокращаются по требованию CA/Browser Forum, это касается всех публичных удостоверяющих центров. План Let’s Encrypt такой:
- с 13 мая 2026 года сертификаты на 45 дней доступны по желанию, через профиль tlsserver;
- 10 февраля 2027 года обычные сертификаты станут 64-дневными, последние 90-дневные истекут 11 мая 2027 года;
- 16 февраля 2028 года срок сократится до 45 дней.
Если продление у вас автоматическое, ничего делать не нужно. А вот самописные скрипты, которые продлевают сертификат «за 30 дней до конца» или раз в 60 дней, придётся переделать: Let’s Encrypt советует продлевать примерно на двух третях срока.
Настройки TLS для Nginx
После выпуска сертификата набор шифров лучше не придумывать самому, а взять готовый из генератора конфигураций ssl-config.mozilla.org. Профиль Intermediate подходит почти всем сайтам. Минимум, который стоит проверить в блоке server:
ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d;
После правки: sudo nginx -t && sudo systemctl reload nginx. Результат удобно проверить в SSL Labs: там видно протоколы, цепочку и слабые места.
Типичные проблемы
- Challenge failed: DNS указывает не на тот IP, закрыт 80-й порт или HTTP перехватывает другой сервис.
- Не тот server_name: в конфиге Nginx или Apache указан другой хост, и Certbot не знает, куда вписать сертификат.
- Лимиты Let’s Encrypt: слишком много неудачных попыток. Подождите или тренируйтесь на staging и
--dry-run. - Сайт за Cloudflare или другим прокси: режим SSL на стороне CDN должен быть Full или Full (strict), иначе возможна петля редиректов.
Короткий чеклист
- A-запись на VPS, порты 80 и 443 открыты.
- Certbot из snap или пакеты
python3-certbot-apache/python3-certbot-nginx. certbot --apacheилиcertbot --nginx, редирект на HTTPS включён.- Сайт открывается по https,
certbot renew --dry-runпроходит без ошибок.
В итоге бесплатный сертификат на VPS ставится за несколько минут одной командой Certbot. Главное сейчас не выпуск, а автоматическое продление: сроки сокращаются до 64 дней в 2027 году и до 45 дней в 2028-м, и ручное продление по календарю скоро перестанет работать.