Документация
VPS

SSL от Let's Encrypt для nginx

certbot, auto-renew, wildcard через DNS-01. От нуля до A+ на SSL Labs.

5 мин

SSL от Let's Encrypt для nginx

Бесплатный DV-сертификат за 30 секунд через certbot. Автообновление настраивается автоматически.

Требования

  • nginx уже установлен и работает по HTTP.
  • Домен уже указывает A-записью на IP вашего VPS.
  • Порт 80 открыт в firewall (для HTTP-01 challenge).

Установка certbot

apt update
apt install certbot python3-certbot-nginx -y

Получить сертификат

Certbot сам изменит конфиг nginx (добавит HTTPS-блок, редирект с HTTP на HTTPS):

certbot --nginx -d example.com -d www.example.com \
  -m [email protected] --agree-tos --non-interactive --redirect

Через 30 секунд вы получите ответ вида Congratulations! Your certificate.... Проверьте: curl -I https://example.com — должен быть 200 OK.

Проверить в SSL Labs

Оцените качество: ssllabs.com/ssltest. Цель — A или A+.

Для A+ обычно нужно добавить в nginx-конфиг:

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;

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

certbot сам ставит systemd timer. Проверьте:

systemctl list-timers | grep certbot
# ● certbot.timer — 2 раза в день

Тестовый прогон:

certbot renew --dry-run

Если dry-run прошёл — реальное обновление сработает автоматически.

Wildcard-сертификат (*.example.com)

Wildcard требует DNS-01 challenge — нужен API-токен вашего DNS-провайдера. Пример для Cloudflare:

apt install python3-certbot-dns-cloudflare -y

cat > /root/.cloudflare.ini <<EOF
dns_cloudflare_api_token = <YOUR_TOKEN>
EOF
chmod 600 /root/.cloudflare.ini

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /root/.cloudflare.ini \
  -d '*.example.com' -d example.com

Ошибки

  • Timeout during connect — порт 80 закрыт firewall-ом или IP не совпадает с DNS.
  • too many failed authorizations — Let's Encrypt рейт-лимит. Ждите час.
  • DNS не резолвится — проверьте dig example.com. Если A-запись свежая — подождите несколько минут.

Что дальше