Skip to content

Latest commit

 

History

History
83 lines (61 loc) · 3.58 KB

File metadata and controls

83 lines (61 loc) · 3.58 KB

03 · Сертификаты

Wildcard через DNS-01 и деплой-хук перезагрузки nginx.

Установка certbot

sudo apt install -y certbot python3-certbot-dns-cloudflare
certbot --version

Основной сертификат (ECDSA)

Один wildcard покрывает все поддомены — сколько бы заглушек ни добавили, новый сертификат не понадобится.

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
  --dns-cloudflare-propagation-seconds 60 \
  -d example.com -d '*.example.com'

Современный certbot по умолчанию выпускает ECDSA — это то, что нужно.

Проверка: sudo certbot certificates.

Основной и единственный поток — один ECDSA wildcard на все домены. Если когда-нибудь понадобится включить пост-квантовую подпись ML-DSA65 в Reality — ей нужен отдельный сертификат с большим объёмом (маскировка под «тяжёлый» таргет), подробности в 05-troubleshooting.md.

Хук перезагрузки nginx

Не пропускайте. Без хука всё работает ровно до первого автопродления, а потом ломается молча: certbot обновляет файлы на диске, но nginx держит сертификат в памяти с момента последнего reload. Через 60–90 дней сервер начинает отдавать просроченный сертификат при полностью валидных файлах — браузеры показывают предупреждение, а Reality-таргет перестаёт проходить проверку.

sudo tee /etc/letsencrypt/renewal-hooks/deploy/90-reload-nginx.sh > /dev/null <<'EOF'
#!/bin/bash
set -e
if systemctl is-active --quiet nginx; then
    nginx -t && systemctl reload nginx
fi
EOF
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/90-reload-nginx.sh

chmod +x обязателен — без него certbot молча пропустит хук. Префикс 90- задаёт порядок (certbot идёт по алфавиту): если позже появятся хуки, готовящие файлы сертификата, давайте им меньший номер, чтобы reload шёл последним.

Проверка продления:

sudo certbot renew --dry-run

Ждём Congratulations, all simulated renewals succeeded. Прогоняйте после любого изменения в сертификатах.

Правило для будущих заглушек

Новых сертификатов не нужно — wildcard покрывает любой поддомен (на один уровень: plug3.example.com покрыт, a.plug3.example.com — нет). Все заглушки используют один и тот же ECDSA wildcard, отдельной линии под конкретную заглушку не заводим.

Проверка

  • sudo certbot certificates показывает нужную линию
  • Deploy-хук существует и исполняемый
  • sudo certbot renew --dry-run проходит

Дальше: 04-services.md