Гайды

SSL/TLS и сертификаты Let's Encrypt

ACME HTTP-01 и DNS-01, certbot и nginx, cert-manager в Kubernetes, цепочки сертификатов и приватный PKI.

~9 мин чтения

SSL/TLS и сертификаты Let's Encrypt

TLS шифрует транспорт (HTTP, DB, gRPC). Публичные сертификаты для веба часто получают через Let's Encrypt (ACME) бесплатно на ~90 дней с автообновлением. Прокси и приложение — Деплой FastAPI с Docker и Nginx; Ingress в кластере — Ingress и контроллеры в Kubernetes.


1. ACME и проверка владения

HTTP-01 — файл/роут на 80 порту. DNS-01 — TXT-запись (нужен для wildcard *.example.com).


2. certbot (Linux / nginx)

bash
sudo certbot --nginx -d api.example.com

Cron/systemd timer обновляет сертификат; nginx reload после renew hook.

Проверка продления без записи на диск: sudo certbot renew --dry-run — ловит сломанные хуки и истёкшие DNS-записи до реального дедлайна. Алерт за N дней до expiry всё равно нужен: ACME может быть недоступен в момент renew.


3. Kubernetes: cert-manager

ClusterIssuer Let's Encrypt + ресурс Certificate или аннотация на Ingress. Автообновление и секрет в namespace.


4. Цепочка и протоколы

Полная chain (leaf + intermediate) в nginx ssl_certificate. Отключите устаревшие TLS1.0/1.1; включите OCSP stapling.


5. Приватные PKI

Внутри кластера — step-ca, Vault PKI, или корпоративный CA; доверие через корневой сертификат в trust store клиентов.


6. Cipher suites и совместимость

Используйте рекомендации Mozilla SSL Config Generator (modern/intermediate). Отключите TLS 1.0/1.1 и слабые шифры; для старых клиентов — отдельный endpoint или прокси с явным риском.


7. Сертификаты для сервис-сервис

mTLS между микросервисами: короткоживущие сертификаты от внутреннего CA, ротация автоматом (SPIFFE/SPIRE, mesh). На публичном edge — публичный CA; внутри VPC — часто достаточно приватного доверия.


8. Чек-лист

  • Мониторинг срока действия (алерт за 14 дней).
  • HSTS только после уверенности, что HTTPS везде.
  • Не коммитить приватные ключи; права файлов 0600.
  • SNI на shared IP при множестве хостов за одним балансировщиком.
  • Проверка цепочки через openssl s_client -connect после деплоя.

Дальше: OWASP Top 10 · Let's Encrypt