Бесплатный SSL от Let’s Encrypt на Apache и Nginx: Certbot и новые сроки сертификатов

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-м, и ручное продление по календарю скоро перестанет работать.

Источники и ссылки


Комментарии загружаются…