Sobes.tech
Middle+

Какви централни средства използвате за актуализиране и мониторинг на състоянието на сертификатите на крайните устройства?

sobes.tech AI

Отговор от AI

За централизиран управление и мониторинг на сертификати използвам следните инструменти:

  1. HashiCorp Vault:
    • Secrets Engine pki. Позволява издаване и отмяна на сертификати чрез API. Интегрира се с Ansible, Terraform, Kubernetes.
    • Използвам за автоматично създаване и актуализиране на сертификати за услуги (TLS, mTLS).
  2. Cert-Manager (за Kubernetes):
    • Вградено се интегрира с Kubernetes за автоматично издаване на сертификати от различни Issuer (Let's Encrypt, Vault, вътрешни CA).
    • Статусът на сертификатите се следи чрез метрики certmanager_certificate_expiration_timestamp_seconds, които се експонират за Prometheus.
  3. OpenSSL + персонализирани скриптове:
    • За инвентаризация на съществуващите сертификати на сървърите.
    • Скриптовете събират данни за срока на валидност (openssl x509 -noout -enddate -in certificate.pem), информация за издателя и Subject.
    • Резултатите се агрегира в централизирана система (например, Prometheus, Grafana).
    #!/bin/bash
    
    CERT_FILE=$1
    
    if [ -f "$CERT_FILE" ]; then
        # Получаване на датата на изтичане във формат YYYY-MM-DD HH:MM:SS
        END_DATE=$(openssl x509 -noout -enddate -in $CERT_FILE 2>/dev/null | cut -d= -f2)
        # Преобразуване в Unix timestamp
        END_TIMESTAMP=$(date -d "$END_DATE" +%s 2>/dev/null)
    
        if [ -n "$END_TIMESTAMP" ]; then
            echo "$END_TIMESTAMP"
        else
            echo "Грешка при парсиране на датата на изтичане." 2>&1
            exit 1
        fi
    else
        echo "Файлът с сертификата не е намерен: $CERT_FILE" 2>&1
        exit 1
    fi
    
  4. Prometheus + Grafana:
    • Prometheus събира метрики за срока на валидност на сертификатите (например чрез Node Exporter, Blackbox Exporter за външни проверки, метрики cert-manager).
    • Настройвам аларми в Alertmanager за наближаващ срок на изтичане на сертификата.
    • Grafana се използва за визуализация на състоянието на сертификатите, създаване на табла с сроковете им на валидност.
  5. Мониторинг на външни услуги:
    • Използвам Blackbox Exporter за мониторинг на достъпността на услугите по HTTPS и проверка на валидността на сертификатите от външната страна.
    modules:
      http_2xx:
        prober: http
        timeout: 5s
        http:
          preferred_ip_protocol: "ipv4"
          tls_config:
            insecure_skip_verify: false # Проверка на валидността на сертификата
    

Процесът изглежда така:

  • Издаване: Автоматизирано чрез Vault или Cert-Manager.
  • Инвентаризация/Събиране на данни: Скриптове или вградени механизми събират метрики.
  • Агрегация/Мониторинг: Prometheus събира метрики, Alertmanager уведомява за наближаващ срок на изтичане.
  • Визуализация: Grafana показва състоянието на всички сертификати.
  • Актуализация: Автоматична (Cert-Manager) или полуавтоматична (чрез Ansible/Terraform с Vault).

Това е централизираният подход, който позволява пълна видимост на състоянието на сертификатите на всички контролирани крайни устройства и услуги и минимизира престоя поради изтекли сертификати.