MAATRIX / Блог / SSL Let's Encrypt на VPS: бесплатный HTTPS за 10 минут

SSL Let's Encrypt на VPS: бесплатный HTTPS за 10 минут

Блог MAATRIX · 2026-07-07

HTTPS сегодня обязателен: браузеры помечают HTTP как небезопасный, а API и webhook требуют TLS. Let's Encrypt выдаёт бесплатные сертификаты на 90 дней с автоматическим продлением через certbot.

Предварительные условия

Домен с A-записью на IP VPS. Let's Encrypt не выдаёт сертификат на голый IP.

Порт 80 открыт снаружи — HTTP-01 challenge certbot проверяет файл по http://domain/.well-known/acme-challenge/.

nginx (или другой веб-сервер) уже установлен и отвечает на домен — certbot --nginx встроит SSL в конфиг.

Staging CA Let's Encrypt (acme-staging) — тестируйте automation без rate limits production CA; сертификат staging браузер не доверяет — это нормально.

HSTS preload list — только для mature domains; ошибка strand users on broken HTTPS months.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

VPS для сайта

Установка certbot

apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com

Certbot спросит email для уведомлений об истечении, согласие с ToS и redirect HTTP→HTTPS — для production redirect рекомендуем.

Сертификаты: /etc/letsencrypt/live/example.com/fullchain.pem и privkey.pem — не копируйте вручную, certbot обновляет их сам.

Несколько доменов на одном cert экономят reload nginx — certbot -d a.com -d b.com одним SAN сертификатом.

Dual cert RSA + ECDSA — certbot поддерживает два сертификата для старых клиентов и быстрого ECDSA handshake на modern browsers.

Ручной SSL block

При ручной настройке добавьте server { listen 443 ssl http2; ssl_certificate ...; ssl_certificate_key ...; }.

ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; — современный безопасный профиль.

HSTS (Strict-Transport-Security) включайте только когда уверены, что HTTPS стабилен — иначе заблокируете пользователей на HTTP.

После renew проверяйте nginx -t — редко certbot hook ломает symlink paths при custom layouts.

Certificate Transparency logs публичны — internal hostname не используйте в LE cert если не хотите светить subdomain.

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

certbot renew --dry-run — проверка. Systemd timer certbot.timer или cron 0 3 * * * certbot renew --quiet уже ставится пакетом.

После renew nginx reload: hook --deploy-hook "systemctl reload nginx".

Сертификат живёт 90 дней, renew запускается за 30 дней до конца — простой из-за истечения маловероятен при работающем cron.

OCSP stapling снижает latency первого TLS handshake — certbot nginx plugin часто включает автоматически на современных конфигах.

Renewal hooks для reload не только nginx — haproxy, caddy, mail server smtpd TLS certs тоже через deploy-hook.

Wildcard DNS-01

Wildcard *.example.com требует DNS-01 challenge: certbot certonly --manual --preferred-challenges dns.

Добавьте TXT _acme-challenge в DNS провайдера. Автоматизация — через API Cloudflare/Route53 и certbot-dns-* плагины.

Wildcard удобен для множества поддоменов без отдельного cert на каждый.

Мониторьте expiry внешним скриптом: openssl s_client -connect example.com:443 | openssl x509 -noout -dates — backup alert если certbot timer сломался.

Fail2ban filter для repeated TLS handshake errors — опционально против SSL scanners noise.

Webhook и API

Telegram, Stripe, GitHub webhooks требуют HTTPS с валидным cert. Self-signed не подойдёт — только Let's Encrypt или коммерческий CA.

Проверьте цепочку: ssllabs.com/ssltest — оценка A/A+ подтверждает корректную настройку intermediate certificates.

Для internal-only сервисов без публичного HTTP используйте DNS-01 или self-signed + private CA — LE HTTP-01 не применим.

Проблемы

  • Connection refused — firewall блокирует 80.
  • NXDOMAIN — DNS ещё не распространился.
  • Too many requests — лимит LE, подождите неделю.

Логи certbot: /var/log/letsencrypt/letsencrypt.log — подробная причина отказа validation.

Если certbot сообщает, что домен недоступен, проверьте с внешней машины curl -I http://domain/.well-known/acme-challenge/test — так исключаете локальный firewall.

Переезд на новый VPS: получите cert на новом IP до DNS cutover через DNS-01 или временный HTTP на старом и новом параллельно.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

VPS для сайта

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

Срок сертификата?

90 дней, auto-renew за 30 дней до конца.

SSL на IP?

Let's Encrypt не выдаёт на голый IP — нужен домен.

Платный SSL?

Let's Encrypt достаточно; EV — для банков/enterprise.