Гайды
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)
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