Коротко: бесплатный HTTPS ставится одной командой: Let's Encrypt выдаёт сертификаты, certbot получает их и сам продлевает; авто-продление — самое важное.

Бесплатный валидный HTTPS-сертификат сегодня ставится одной командой: Let's Encrypt выдаёт сертификаты автоматически, а утилита certbot получает их, прописывает в конфиг веб-сервера и сама продлевает. Разберём, как это работает, как настроить и почему авто-продление — самое важное.

Что такое Let's Encrypt и certbot

Let's Encrypt — некоммерческий центр сертификации, выдающий бесплатные TLS-сертификаты сроком на 90 дней по автоматизированному протоколу ACME. Certbot — официальный клиент, который проходит проверку владения доменом, забирает сертификат, вставляет его в конфиг Nginx/Apache и ставит таймер на продление. Никаких ручных загрузок файлов и оплат.

Как certbot подтверждает, что домен ваш

Чаще всего используется HTTP-01 challenge: certbot кладёт временный файл по пути /.well-known/acme-challenge/..., а сервер Let's Encrypt обращается к вашему домену по 80 порту и проверяет его. Поэтому до выпуска нужно, чтобы DNS уже указывал на сервер и порт 80 был открыт.

Установка и выпуск (Nginx)

# через snap (рекомендуемый способ) или пакетный менеджер
sudo apt install certbot python3-certbot-nginx

# выпустить сертификат и автоматически прописать его в конфиг Nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot спросит email (для уведомлений об истечении) и предложит автоматически настроить редирект с HTTP на HTTPS — соглашайтесь. После этого в конфиге Nginx появятся строки с путями к сертификату и ключу, а сайт заработает по https://.

Самое важное: авто-продление

Сертификат живёт всего 90 дней — продлевать вручную нереально. Certbot при установке создаёт системный таймер, который дважды в день пытается продлить то, что скоро истекает (реально обновляется примерно за 30 дней до конца). Проверить, что механизм жив, нужно сразу, не дожидаясь истечения:

# «сухой прогон» продления — не трогает боевой сертификат
sudo certbot renew --dry-run

# посмотреть таймер
systemctl list-timers | grep certbot

Если dry-run прошёл — продление настроено. Самая частая авария с HTTPS — это именно «сертификат протух, потому что продление молча сломалось». Поэтому проверьте таймер и оставьте рабочий email для алертов.

Минимальная гигиена TLS

  • Редирект HTTP → HTTPS (certbot настраивает сам) — чтобы по 80 порту никто не ходил «голым».
  • HSTS — заголовок Strict-Transport-Security, чтобы браузер всегда ходил по HTTPS. Включайте осознанно: откатить тяжело.
  • Современные протоколы — TLS 1.2/1.3, старые SSLv3/TLS 1.0 отключены.
  • Wildcard (*.example.com) выпускается через DNS-01 challenge (нужен доступ к DNS-API), если поддоменов много.

Если у вас панель хостинга

На shared-хостинге с ispmanager/cPanel certbot часто уже встроен: HTTPS включается галочкой «Let's Encrypt» в панели, и продление там тоже автоматическое. Прямой доступ к certbot нужен в основном на своём VPS.

Итог

HTTPS перестал быть платным и сложным: certbot --nginx -d домен, согласиться на редирект, проверить certbot renew --dry-run — и сайт работает по защищённому соединению с авто-продлением. Главное — не забыть про продление и оставить живой email для уведомлений.

Если нужно поднять HTTPS на боевом сервере или разобраться, почему продление не срабатывает, — помогу на консультации.

После выката HTTPS полезно завести мониторинг доступности и срока сертификата — например, на своём сервере через Gotcha.