Какие централизованные средства обновления и мониторинга состояния сертификатов на эндпойнтах вы используете?

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

Ответ

В инфраструктуре, которую я строил, управление TLS-сертификатами было автоматизировано и централизовано.

Для выпуска и автоматического обновления:

  • Cert-Manager в Kubernetes: Это основной инструмент. Он работает как оператор в кластере, интегрируется с Let's Encrypt (или внутренним CA) и автоматически запрашивает, продлевает и применяет сертификаты к Ingress-ресурсам. Конфигурация через CRD:
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: my-app-tls
    spec:
      secretName: my-app-tls-secret
      issuerRef:
        name: letsencrypt-prod
        kind: ClusterIssuer
      commonName: app.example.com
      dnsNames:
      - app.example.com
  • Hashicorp Vault с PKI Secrets Engine: Для внутренних сервисов и более сложных политик. Vault выступает в роли внутреннего центра сертификации, позволяет гибко настраивать TTL и роли.

Для мониторинга и алертинга:

  • Prometheus + Blackbox Exporter: Blackbox exporter пробивает эндпойнты по HTTPS и экспортирует метрику probe_ssl_earliest_cert_expiry. В Prometheus правило алерта предупреждает за 30, 14 и 7 дней до истечения срока действия:
    - alert: SSLCertExpiringSoon
      expr: probe_ssl_earliest_cert_expiry - time() < 86400 * 30 # 30 дней
      for: 5m
      labels:
        severity: warning
      annotations:
        summary: "Сертификат для {{ $labels.instance }} скоро истечёт"
  • Специализированные утилиты: Для простых проверок использовал check_ssl_cert из Nagios-плагинов или самописные скрипты на Python с библиотекой cryptography, которые интегрировались в общую систему мониторинга.

Такой подход гарантирует, что ни один сертификат не «протухнет» неожиданно, а процесс обновления полностью автоматизирован.