- Home »

Создание wildcard сертификатов Let’s Encrypt с помощью Certbot
В этой статье разберёмся, как быстро и без боли получить wildcard сертификаты от Let’s Encrypt с помощью Certbot. Если ты когда-нибудь настраивал HTTPS для сайта, то наверняка сталкивался с вопросом: «А как быть, если у меня не один поддомен, а десятки, и все должны быть защищены?» Вот тут и приходят на помощь wildcard-сертификаты. Расскажу, как это работает, зачем оно нужно, и как всё это дело автоматизировать, чтобы не тратить время на рутину. Будет много практики, примеры, грабли, на которые наступал лично, и советы, как их обойти. В конце — выводы и рекомендации, чтобы ты мог сразу внедрять это на своих серверах, будь то VPS или выделенный сервер (кстати, если ищешь надёжный хостинг — VPS или dedicated — рекомендую).
Как это вообще работает?
Let’s Encrypt — это бесплатный центр сертификации, который позволяет выпускать SSL/TLS-сертификаты для доменов. Wildcard-сертификат — это такой сертификат, который действует сразу на все поддомены определённого домена (например, *.example.com
). Это удобно, если у тебя, например, есть app.example.com
, api.example.com
, blog.example.com
и так далее — не нужно получать отдельный сертификат для каждого.
Но есть нюанс: для выпуска wildcard-сертификата Let’s Encrypt требует подтверждения владения доменом через DNS (DNS-01 challenge). То есть, нужно добавить специальную TXT-запись в DNS-зону домена. Это чуть сложнее, чем HTTP-01 challenge (когда просто кладёшь файл на сервер), но зато открывает новые возможности для автоматизации.
Зачем это нужно и чем wildcard-сертификаты лучше обычных?
- Экономия времени: Один сертификат — все поддомены. Не нужно каждый раз возиться с отдельной заявкой.
- Автоматизация: Можно настроить скрипты, которые будут продлевать сертификаты без твоего участия.
- Безопасность: Все сервисы на поддоменах сразу получают HTTPS, не забываешь ни про один.
- Гибкость: Добавляешь новые поддомены — сертификат уже действует.
Как быстро и просто всё настроить?
Пошагово разберём, как получить wildcard-сертификат с помощью Certbot. Certbot — это официальный клиент Let’s Encrypt, который умеет автоматизировать процесс получения и продления сертификатов.
- Установить Certbot
На большинстве Linux-дистрибутивов это делается одной командой:
sudo apt update
sudo apt install certbot
Или, если нужен плагин для работы с DNS (например, для Cloudflare):
sudo apt install python3-certbot-dns-cloudflare
Список всех поддерживаемых DNS-провайдеров и плагинов — на официальном сайте Certbot.
- Подготовить доступ к DNS
Для автоматизации нужен API-ключ от DNS-провайдера (например, Cloudflare, DigitalOcean, Yandex.Cloud и т.д.). Обычно это делается через создание токена в панели управления. - Выпустить сертификат
Пример для Cloudflare:
export CLOUDFLARE_API_TOKEN="твой_токен"
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-d "*.example.com" -d example.com
Для других провайдеров меняется только плагин и путь к credentials-файлу.
Если автоматизации нет — можно использовать
--manual
режим:
certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com
Certbot покажет TXT-запись, которую нужно добавить в DNS. После добавления — жмёшь Enter, и сертификат будет выпущен.
- Настроить автоматическое продление
Добавь в cron:
0 3 * * * certbot renew --quiet
Если используешь DNS API — всё будет работать автоматически. Если вручную — придётся каждые 90 дней обновлять TXT-запись.
Примеры, схемы, практические советы
Сценарий | Плюсы | Минусы | Рекомендации |
---|---|---|---|
Автоматизация через DNS API (Cloudflare, DigitalOcean и др.) |
|
|
|
Ручной режим (manual) |
|
|
|
Обычные сертификаты (без wildcard) |
|
|
|
Положительные и отрицательные кейсы
-
Положительный:
У тебя SaaS-платформа, где каждый клиент получает свой поддомен (client1.example.com
,client2.example.com
). С wildcard-сертификатом ты не паришься — все поддомены сразу под защитой. Настроил автоматическое продление — и забыл. -
Отрицательный:
Используешь ручной режим, забываешь продлить сертификат — клиенты видят страшное предупреждение в браузере. Или: DNS-провайдер не поддерживает API, приходится каждый раз лезть в панель и добавлять TXT-запись.
Команды для разных сценариев
Вот полный список команд для популярных сценариев:
-
Cloudflare (автоматизация):
sudo apt install python3-certbot-dns-cloudflare
export CLOUDFLARE_API_TOKEN="твой_токен"
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-d "*.example.com" -d example.com
-
DigitalOcean (автоматизация):
sudo apt install python3-certbot-dns-digitalocean
export DO_API_TOKEN="твой_токен"
certbot certonly \
--dns-digitalocean \
--dns-digitalocean-credentials ~/.secrets/certbot/digitalocean.ini \
-d "*.example.com" -d example.com
-
Ручной режим:
certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com
-
Автоматическое продление:
certbot renew --quiet
Похожие решения, альтернативы и утилиты
- acme.sh — лёгкий bash-клиент для ACME-протокола, поддерживает кучу DNS-провайдеров, часто проще интегрируется в скрипты.
- lego — кроссплатформенный ACME-клиент на Go, тоже умеет wildcard и автоматизацию через DNS.
- Get HTTPS for free — ручной способ получить сертификат, если не хочется ставить ничего на сервер.
Статистика, сравнение с другими решениями
Клиент | Язык | Wildcards | DNS API | Автоматизация | Документация |
---|---|---|---|---|---|
Certbot | Python | Да | Да (через плагины) | Да | Отличная |
acme.sh | Bash | Да | Да (много провайдеров) | Да | Хорошая |
lego | Go | Да | Да | Да | Средняя |
Интересные факты и нестандартные способы использования
- Certbot можно запускать не только на сервере, где крутится сайт, но и на отдельной машине — главное, чтобы был доступ к DNS API.
-
Wildcard-сертификаты можно использовать для защиты внутренних сервисов (например,
vpn.example.com
,grafana.example.com
), не публикуя их в интернет. - Можно интегрировать Certbot в CI/CD пайплайн — сертификаты будут выпускаться автоматически при деплое новых сервисов.
- Certbot поддерживает хуки (hooks) — можно автоматически перезапускать nginx, apache или docker-контейнеры после обновления сертификата.
Какие новые возможности открываются и чем это поможет в автоматизации и скриптах?
- Полная автоматизация HTTPS: Один раз настроил — и забыл. Сертификаты обновляются сами, сервисы всегда под защитой.
- Масштабируемость: Добавляешь новые поддомены — не нужно ничего менять в сертификате.
- Интеграция с DevOps: Можно встроить в ansible/playbook, docker-compose, kubernetes (через cert-manager).
- Безопасность: Не хранишь приватные ключи на сторонних сервисах, всё генерируется локально.
Вывод — заключение и рекомендации
Wildcard-сертификаты Let’s Encrypt — это must-have для любого, кто работает с большим количеством поддоменов. Certbot — проверенный инструмент, который позволяет автоматизировать выпуск и продление сертификатов, особенно если твой DNS-провайдер поддерживает API. Если автоматизации нет — можно использовать ручной режим, но это вариант на крайний случай.
Рекомендую:
- Использовать Certbot с DNS API-плагинами для полной автоматизации.
- Хранить API-ключи в защищённых местах, не коммитить их в git.
- Добавить автоматическое продление в cron и настроить хуки для перезапуска сервисов.
- Если нужен хостинг для экспериментов — VPS или dedicated — отличный вариант для старта.
- Не забывать про безопасность: wildcard-сертификат — это ключ ко всем поддоменам, не давай к нему доступ лишним людям.
Если хочется ещё больше гибкости — посмотри в сторону acme.sh или lego. Но для большинства задач Certbot — это золотой стандарт, поддерживаемый и хорошо документированный.
Внедряй, автоматизируй, экономь время и нервы. Если остались вопросы — пиши в комментарии, всегда рад помочь!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.