Wildcard SSL сертификат *.example.com защищает все поддомены одновременно. Let's Encrypt выдаёт wildcard сертификаты бесплатно через DNS-01 challenge.
Установка Certbot
sudo apt update
sudo apt install -y certbot python3-certbot-dns-cloudflare
Метод 1: Ручной DNS challenge
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d "example.com"
# Certbot попросит добавить TXT-запись:
# _acme-challenge.example.com → указанное значение
#
# Добавьте запись в DNS и дождитесь propagation (1–5 мин)
# Затем нажмите Enter
Метод 2: Автоматический через Cloudflare API
# Создать файл с токеном Cloudflare
sudo nano /etc/letsencrypt/cloudflare.ini
# Содержимое:
dns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN
sudo chmod 600 /etc/letsencrypt/cloudflare.ini
# Получить сертификат
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d "*.example.com" -d "example.com" --email admin@example.com --agree-tos --non-interactive
✅ С Cloudflare API автопродление работает полностью автоматически — certbot timer в systemd обновит сертификат за 30 дней до истечения.
Настройка Nginx с wildcard SSL
server {
listen 443 ssl http2;
server_name *.example.com example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
Проверка и обновление
# Проверить сертификат
sudo certbot certificates
# Тест автообновления
sudo certbot renew --dry-run
# Принудительное обновление
sudo certbot renew --force-renewal
⚠️ Cloudflare API токен должен иметь только разрешение Zone → DNS → Edit для вашего домена. Не используйте Global API Key — он даёт полный доступ к аккаунту.