← back to /blog← powrót do /blog

→ read in english

certops: plan, drift i trust store dla PKI

Przy certyfikatach sama data wygaśnięcia to zwykle za mało. Cert może być ważny, ale wystawiony przez złe CA. Root może nie być w trust store na runnerze. Usługa może mieć poprawny cert na jednym endpointcie i stary chain na drugim. Wewnętrzne PKI szybko robi się zbiorem małych wyjątków, których nikt nie chce sprawdzać ręcznie.

Dlatego napisałem certops — małe CLI w Go do ogarniania CA, certyfikatów usług i trust store’ów z jednego terminala.

Co robi

  • certops init tworzy startowy certops.yaml.
  • certops plan -f certops.yaml --live sprawdza konfigurację, CA providerów, inventory, trust policy i certyfikaty usług.
  • certops drift -f certops.yaml --fail-on warn porównuje stan opisany w YAML z tym, co faktycznie widać po live checkach.
  • CA providery: Smallstep, Vault PKI, CFSSL-compatible API oraz zwykłe PEM bundle z pliku albo URL.
  • Local trust store: trust plan, trust verify, trust install --yes.
  • Fleet trust store: fleet trust plan/apply/verify/remove po SSH na hostach Linux.
  • Endpoint checks: expiry, SAN/hostname, chain trust, wersje TLS, ALPN, OCSP stapling, redirecty i HSTS.
  • Outputy dla skryptów: tekst, JSON, YAML-like, Prometheus text, HTML reporty i watch mode tam, gdzie ma to sens.

Ważne: część komend tylko raportuje stan, ale trust install, fleet trust apply i fleet trust remove zmieniają trust store. Dlatego wymagają jawnego --yes.

Po co

Chciałem mieć jedno narzędzie, które odpowiada na proste pytania:

  • czy CA, które mamy w konfiguracji, faktycznie odpowiada i ma oczekiwany fingerprint?
  • czy usługi mają certyfikaty z właściwego CA i z odpowiednim zapasem czasu?
  • czy runner albo host aplikacyjny ufa temu rootowi, któremu powinien ufać?
  • co się zmieni, jeżeli dołożę root CA do trust store?
  • czy po zmianie nadal jest drift?

To są rzeczy, które da się sprawdzać ręcznie przez openssl, curl, update-ca-certificates i SSH, ale po trzecim środowisku człowiek zaczyna kopiować komendy z historii shella. certops.yaml jest po to, żeby ten stan opisać raz i potem odpalać plan, drift albo verify w terminalu i CI.

Gdzie żyje

— Paweł


← back to /blog← powrót do /blog

→ read in english