Sobes.tech
Middle+

Koje imate iskustvo u postavljanju cikličnog nadzora stanja sertifikata i njegove automatske zamene u DevOps-u?

sobes.tech АИ

Одговор од АИ

Za monitoring sertifikata koristim kombinaciju alata. Glavni monitoring stanja i roka trajanja sertifikata na veb serverima i servisima realizuje se putem:

  1. Prometheus Exporters:

    • ssl exporter: Prikuplja metrike o rokovima trajanja sertifikata sa navedenih endpoint-ova.
    • node exporter (u kombinaciji sa tekstualnim fajlovima): Može se koristiti za monitoring fajlova sertifikata na fajl sistemu.

    Skripte u Bash ili Python redovno proveravaju stanje sertifikata (npr. pomoću openssl x509 -in cert.pem -noout -enddate) i zapisuju rezultat u format koji razume node exporter (textfile collector).

  2. Alertmanager:

    • Podesavam pravila u Alertmanager-u za pokretanje obaveštenja (npr. 30, 7 i 1 dan pre isteka roka) na osnovu metrika iz Prometheusa.
    • Obaveštenja se šalju u Slack, email ili druge komunikacijske kanale.

Automatska zamena sertifikata obično se realizuje pomoću ACME klijenata kao što su certbot ili lego.

  1. Planiranje zadatka: Cron poslovi ili sistemski tajmeri (systemd timers) pokreću ACME klijenta za proveru i ažuriranje sertifikata.

    # Primer cron zapisa za certbot
    0 */12 * * * root certbot renew --quiet --standalone --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
    
  2. Automatizacija putem CI/CD: Za složenije scenarije ili okruženja sa Kubernetes-om, proces ažuriranja sertifikata može biti integrisan u CI/CD pipeline.

    • Na primer, pri korišćenju u Kubernetes klasteru sa Ingress objektima sa TLS, menadžer sertifikata tipa cert-manager automatski izdaje i ažurira Let's Encrypt sertifikate koristeći Controller i Custom Resource Definitions (CRD).
    # Primer Ingress sa anotacijama za cert-manager
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-ingress
      annotations:
        cert-manager.io/cluster-issuer: "letsencrypt-prod"
    spec:
      tls:
      - hosts:
        - example.com
        secretName: example-com-tls
      rules:
      - host: example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
    
  3. Ažuriranje konfiguracija: Nakon uspešnog ažuriranja sertifikata, skripti ili pipeline-ovi restartuju ili ponovo čitaju konfiguracije servisa (veb servera, load balancera), kako bi počeli da koriste novi sertifikat.

Kombinacija monitoringa i automatizacije minimizira rizik od kvara servisa zbog isteka sertifikata.