Certbot DNS challenge на VPS: wildcard SSL-сертификат — иллюстрация к статье Storm Cloud Blog, категория DevOps
Certbot DNS challenge на VPS: wildcard SSL-сертификат — иллюстрация к статье Storm Cloud Blog, категория DevOps
DevOps·2 мин··

Certbot DNS challenge на VPS: wildcard SSL-сертификат

Let's Encrypt через DNS challenge: wildcard SSL для *.example.com, Cloudflare API, автообновление certbot. Когда HTTP challenge не подходит.

Краткий ответ: DNS challenge выпускает wildcard-сертификат (*.example.com) без открытого HTTP на каждый поддомен. Certbot + API DNS-провайдера (Cloudflare) — TXT-запись, сертификат, cron для renew.

HTTP challenge из базового SSL-гайда не покрывает wildcard и не работает, если backend скрыт за Cloudflare proxy без origin-доступа.


HTTP vs DNS challenge

HTTP-01 DNS-01
Wildcard Нет Да
Нужен порт 80 Да Нет
Автоматизация Простая API DNS
Cloudflare proxy Сложнее Идеально

Cloudflare + certbot

sudo apt install certbot python3-certbot-dns-cloudflare -y
# /root/.secrets/cloudflare.ini
dns_cloudflare_api_token = YOUR_TOKEN
chmod 600 /root/.secrets/cloudflare.ini
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
  -d example.com -d '*.example.com'

Автообновление

sudo certbot renew --dry-run

Certbot добавляет systemd timer. После renew — reload Nginx или Traefik:

# /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
#!/bin/bash
systemctl reload nginx

Несколько сервисов на поддоменах

Wildcard покрывает api.example.com, app.example.com, s3.example.com — один cert для MinIO, API и админки.


Безопасность API token

  • Только DNS Edit для нужной zone
  • Не коммитьте credentials
  • Храните на VPS chmod 600

Итог

DNS challenge — must-have для wildcard и Cloudflare-full setup. Один раз настроили API — certbot обновляет автоматически.

VPS + домен — StormNet Cloud. Базовый SSL — Let’s Encrypt.

Частые вопросы

Когда нужен DNS challenge вместо HTTP?

Для wildcard-сертификатов (*.domain.com), когда порт 80 недоступен, или при Cloudflare Full proxy без origin HTTP.

Можно ли автоматически обновлять wildcard SSL?

Да. Certbot renew с DNS plugin обновляет сертификат автоматически — настройте API token и проверьте certbot renew --dry-run.