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.
Рекомендуем прочитать
- SSL на VPS: Let's Encrypt, автообновление и типичные ошибки
- Cloudflare перед VPS: CDN, SSL и защита от DDoS
- Nginx или Caddy: какой веб-сервер выбрать на VPS
- Traefik на VPS: reverse proxy с автоматическим SSL
- Как развернуть сайт на VPS с нуля: полный гайд 2026
- MinIO на VPS: своё S3-хранилище для файлов и бэкапов
Частые вопросы
Когда нужен DNS challenge вместо HTTP?
Для wildcard-сертификатов (*.domain.com), когда порт 80 недоступен, или при Cloudflare Full proxy без origin HTTP.
Можно ли автоматически обновлять wildcard SSL?
Да. Certbot renew с DNS plugin обновляет сертификат автоматически — настройте API token и проверьте certbot renew --dry-run.






