← back to /blog← powrót do /blog
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 inittworzy startowycertops.yaml.certops plan -f certops.yaml --livesprawdza konfigurację, CA providerów, inventory, trust policy i certyfikaty usług.certops drift -f certops.yaml --fail-on warnporó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/removepo 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
- Landing: systeam.pl/certops
- Źródła: github.com/pawel-cygal/certops — MIT
- Issues i PRy mile widziane
— Paweł