Бесплатный SSL-сертификат — это способ включить HTTPS на сайте за десять минут и без расходов: Let's Encrypt выдаёт сертификаты автоматически, а Certbot прописывает их в конфиг веб-сервера и продлевает. Главная тонкость не в выпуске, а в надёжном автообновлении — именно из-за него сайты «внезапно» начинают показывать предупреждение браузера.
Let's Encrypt выдаёт сертификаты бесплатно по протоколу ACME, срок жизни — 90 дней. Certbot ставит сертификат в Nginx или Apache, включает редирект на HTTPS и настраивает автопродление через таймер.
- Подойдёт: сайтам и сервисам на своём сервере, которым нужно быстро включить HTTPS без оплаты.
- Не подойдёт: если нужна расширенная проверка организации и страховка — это уже платные сертификаты.
Кому подходит решение, а кому нет
Рекомендуется:
- Сайт или лендинг на собственном сервере и нужно быстро включить HTTPS.
- Много доменов и поддоменов — автоматизация снимает ручную рутину при продлении.
- Нужен HTTPS для API, тестовых стендов и внутренних сервисов без затрат.
Не подходит:
- Нужна расширенная проверка организации и страховка — это только платные сертификаты.
- Хостинг не даёт доступ к конфигу веб-сервера — сначала уточните это у поддержки.
- Требуется единый сертификат на десятки доменов с ручным контролем выпуска — автоматизация потребует отдельной настройки.
Что говорят цифры и исследования
Выпуск и продление сертификатов в Let's Encrypt идёт по протоколу ACME, описанному в RFC 8555 (IETF, 2019). Это открытый стандарт, а не собственный формат одной компании: поэтому Certbot, acme.sh и клиенты хостингов работают с одним и тем же API и выдают взаимозаменяемые сертификаты. Официальная документация Let's Encrypt фиксирует срок жизни сертификата — 90 дней, что делает автоматическое продление обязательной частью настройки, а не опцией.
Certbot — рекомендованный клиент ACME, его установка и команды описаны в официальном руководстве Certbot. Утилита умеет не только выпустить сертификат, но и сама прописать его в конфигурацию Nginx или Apache и поставить таймер продления, что закрывает главный риск ручных ошибок.
Как работает подтверждение владения доменом
Чтобы выдать сертификат, Let's Encrypt должен убедиться, что вы управляете доменом. Certbot поддерживает несколько способов проверки. HTTP-01 — самый простой: клиент кладёт специальный файл в каталог .well-known/acme-challenge, а служба Let's Encrypt запрашивает его по адресу домена. Способ сработает, только если домен уже указывает на этот сервер и 80-й порт открыт.
DNS-01 подходит для сценариев, где сайт закрыт или сервер недоступен извне: доказательство публикуется в виде TXT-записи в DNS домена. Взамен этот способ позволяет выпустить wildcard-сертификат сразу на все поддомены — его запрашивают с маской -d "*.example.com".
Wildcard удобен, когда поддоменов много и их имена заранее неизвестны: сертификат один, а обновляется централизованно. Обратная сторона — для DNS-проверки нужен доступ к управлению DNS-зоной и аккуратная настройка API у регистратора, иначе автоматизация обновления не заработает.
Сравнение способов выпуска
| Способ | Сложность | Автообновление |
|---|---|---|
| Certbot (Nginx/Apache) | Низкая | Таймер systemd или cron |
| acme.sh | Средняя | Встроенный cron после установки |
| Панель хостинга | Минимальная | Обычно включается автоматически |
| Ручной выпуск | Высокая | Нет — высокий риск просрочки |
Пошаговое руководство
-
Шаг 1: Установите Certbot
На Debian и Ubuntu удобнее ставить пакет с плагином под ваш веб-сервер. Для Nginx это python3-certbot-nginx.
sudo apt update sudo apt install certbot python3-certbot-nginx -
Шаг 2: Выпустите сертификат сразу на все имена
Перечислите домен и поддомены через -d. Certbot сам найдёт конфиг Nginx и предложит включить редирект с HTTP на HTTPS.
sudo certbot --nginx -d example.com -d www.example.com -
Шаг 3: Проверьте автопродление
Пробный запуск показывает, сработает ли обновление, ничего не меняя в реальных сертификатах. Это безопасная проверка, её стоит выполнить сразу после настройки.
sudo certbot renew --dry-run -
Шаг 4: Убедитесь, что таймер активен
Пакет обычно ставит systemd-таймер, который дважды в день проверяет срок и обновляет сертификат заранее.
systemctl list-timers | grep certbot -
Шаг 5: Проконтролируйте срок снаружи
Внешняя проверка видит то же, что и браузер посетителя: дату окончания и корректность цепочки сертификата.
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
Подводные камни и частые ошибки
- Обновили конфиг, но не перезагрузили веб-сервер: сертификат выпущен, а Nginx всё ещё отдаёт старую конфигурацию. После правок проверяйте конфиг и перезагружайте службу.
- Закрыт доступ к проверке владения: если файрвол или прокси блокирует путь проверки, выпуск не пройдёт. Убедитесь, что домен доступен извне на 80-м порту, либо настройте DNS-проверку.
- Сертификат только на «голый» домен: посетители с приставкой www увидят предупреждение. Выпускайте сертификат сразу на все имена или настройте корректный редирект.
- Продление отложено «на потом»: 90 дней пролетают незаметно. Без таймера сайт упадёт в предупреждение в самый неудобный момент.
- Проверка не проходит из-за прокси или CDN: если перед сервером стоит прокси, запрос проверки может не дойти до него. Либо настройте DNS-проверку, либо временно направьте домен напрямую.
Контрольный чек-лист перед запуском
- [ ] Certbot установлен с плагином под ваш веб-сервер
- [ ] Сертификат выпущен на все нужные имена: домен и поддомены
- [ ] Настроен редирект HTTP на HTTPS
- [ ] Команда certbot renew --dry-run проходит без ошибок
- [ ] Таймер автопродления активен
- [ ] Внешняя проверка показывает корректные даты сертификата
Часто задаваемые вопросы
Сертификат Let's Encrypt действительно бесплатный?
Да, Let's Encrypt выдаёт сертификаты домена бесплатно и автоматизированно. Платить не нужно ни за выпуск, ни за продление. Единственное ограничение — срок жизни сертификата 90 дней, поэтому важна автоматизация обновления через Certbot или другой клиент ACME.
Что будет, если сертификат не обновится вовремя?
Сайт начнёт отдавать предупреждение браузера о недействительном сертификате, а часть посетителей просто закроет страницу. Чтобы этого не случилось, настройте автопродление через systemd-таймер или cron и проверяйте команду certbot renew --dry-run.
Можно ли получить один сертификат на несколько доменов?
Да. В одном сертификате можно перечислить основной домен и поддомены через параметры -d. Удобнее всего выпускать сертификат сразу на все нужные имена, чтобы не плодить отдельные конфигурации и не забывать обновлять каждую.
Let's Encrypt подходит для интернет-магазина?
Да, для шифрования трафика он подходит так же, как платные сертификаты. Разница не в уровне шифрования, а в гарантиях и поддержке: платные предлагают страховку и расширенную проверку организации. Для большинства сайтов и магазинов бесплатного варианта достаточно.
Вывод
Бесплатный SSL включается за один вечер: выпустите сертификат сразу на все имена, проверьте пробное продление и убедитесь, что таймер активен. Дальше логично заняться скоростью сайта — сравнение хостингов разобрано в статье как не переплатить за VPS. Если статика не нужна на своём сервере, посмотрите Cloudflare Pages — там HTTPS и CDN включены по умолчанию.
Инструмент Дня