Что такое SSL/TLS?

«Что такое SSL/TLS?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SSL (Secure Sockets Layer) и его современный преемник TLS (Transport Layer Security) — это криптографические протоколы, обеспечивающие безопасную коммуникацию между клиентом и сервером. С точки зрения DevOps, моя задача — корректно настроить, развернуть и поддерживать TLS на всех точках входа (веб-серверы, балансировщики, API-шлюзы).

Как это работает на практике:

  1. «Рукопожатие» (Handshake): Клиент и сервер договариваются о параметрах шифрования, сервер аутентифицируется с помощью SSL-сертификата, а затем создается общий симметричный ключ для шифрования данных сессии.
  2. Сертификаты: Я работаю с центрами сертификации (Let's Encrypt, внутренний PKI) для получения и обновления сертификатов. Автоматизация этого процесса — ключевая задача (например, с помощью certbot).

Пример настройки TLS 1.3 в Nginx, которую я обычно применяю для балансировки нагрузки:

server {
    listen 443 ssl http2;
    server_name api.mycompany.com;

    # Пути к сертификатам (часто монтируются из Secrets Kubernetes или HashiCorp Vault)
    ssl_certificate      /etc/ssl/certs/api_chain.pem;
    ssl_certificate_key  /etc/ssl/private/api_key.pem;

    # Современные безопасные протоколы и шифры
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
    ssl_prefer_server_ciphers off;

    # HSTS для дополнительной безопасности
    add_header Strict-Transport-Security "max-age=63072000" always;
}

Операционные аспекты:

  • Ротация ключей и сертификатов: Автоматизированный процесс для предотвращения истечения срока действия.
  • Мониторинг: Слежу за истекающими сертификатами с помощью Prometheus Blackbox Exporter или специальных скриптов.
  • Инструменты: Использую openssl для диагностики (openssl s_client -connect host:443), а также инструменты для оценки безопасности конфигурации (SSL Labs test).