23
Správa certifikátů
Správa certifikátů — přehled
Certificate Management zajišťuje persistentní monitoring TLS/SSL certifikátů. Sleduje datum vypršení, odesílá upozornění 30/14/7 dní před vypršením a denně kontroluje Certificate Transparency logy (crt.sh), kde detekuje nové certifikáty vydané pro vaše domény.
- •Plánované TLS kontroly — konfigurovatelný interval (1–72h)
- •Notifikace vypršení přes všechny nakonfigurované kanály (email, Telegram, Slack, ...)
- •Grade A–F na certifikát (platnost řetězu, shoda hostname, síla klíče, zbývající dny)
- •Certificate Transparency monitoring — denní kontrola crt.sh pro nové certifikáty
- •Kompletní historie kontrol s grafem zbývajících dní

Záložky rozhraní
| Záložka | Popis |
|---|---|
| Přehled | StatCards (Sledovaných / Platných / Vyprší / Vypršelých), sloupcový graf expiry timeline, tabulka monitorů vyžadujících pozornost |
| Monitory | Seznam všech cert monitorů se stavem, grade, zbývajícími dny. Rozbalitelný řádek zobrazí detail certifikátu. Tlačítko manuální kontroly, přidání/úprava/smazání. |
| CT Upozornění | Nové certifikáty objevené v CT logách pro sledované domény. Badge zobrazuje počet nepotvrzených upozornění. |
| Historie | Vyberte monitor → spojnicový graf zbývajících dní v čase + tabulka jednotlivých kontrol. |
Výpočet grade
Každá kontrola produkuje grade (A/B/C/F) vyhodnocením čtyř kritérií v pořadí:
| Grade | Podmínka |
|---|---|
| F | Certifikát vypršel (dny < 0) nebo chyba připojení |
| C | Neshoda hostname (CN / SAN neodpovídá FQDN) |
| B | Chain validace selhala, nebo slabý klíč (RSA < 2048 bit), nebo 0–13 zbývajících dní |
| B | 14–29 zbývajících dní (certifikát jinak platný) |
| A | ≥ 30 zbývajících dní, platný řetěz, shoda hostname, dostatečný klíč |
Konfigurace monitoru
| Pole | Popis | Výchozí |
|---|---|---|
| Název | Zobrazovaný název monitoru | — |
| FQDN | Doménové jméno ke kontrole (bez https://) | — |
| Port | TLS port pro připojení | 443 |
| Interval | Jak často spouštět kontrolu (hodiny) | 24h |
| Notifikovat před (dny) | Dny před vypršením pro odeslání notifikace. Lze vybrat více prahů. | 30, 14, 7 |
Certificate Transparency monitoring
Při každé kontrole domény systém také dotazuje veřejné CT log API crt.sh na certifikáty vydané pro danou doménu (wildcard vyhledávání: %.domain.tld). Nové nálezy jsou uloženy jako CT Upozornění.
- •Detekuje certifikáty vydané třetími stranami (potenciální phishing, chybně nakonfigurované subdomény)
- •Každý CT záznam je uložen s: serial number, issuer, CN, SANs, období platnosti, crt.sh ID
- •Upozornění lze potvrdit (acknowledge) pro označení jako zkontrolovaná
- •Badge na záložce CT Upozornění zobrazuje počet nepotvrzených upozornění
REST API
Všechny operace správy certifikátů jsou dostupné přes REST API (Security tier, vyžadován Bearer token):
| Method | Endpoint | Popis |
|---|---|---|
| GET | /api/v1/certificates/summary | Statistiky a expiry timeline |
| GET | /api/v1/certificates/monitors | Seznam všech monitorů |
| POST | /api/v1/certificates/monitors | Vytvořit monitor |
| PUT | /api/v1/certificates/monitors/{id} | Upravit monitor |
| DELETE | /api/v1/certificates/monitors/{id} | Smazat monitor (CASCADE) |
| POST | /api/v1/certificates/monitors/{id}/check | Spustit okamžitou kontrolu → vrátí CertCheck |
| GET | /api/v1/certificates/monitors/{id}/history | Historie kontrol (?limit=30) |
| GET | /api/v1/certificates/ct-alerts | CT upozornění (?limit=50, ?monitor_id=N) |
| PUT | /api/v1/certificates/ct-alerts/{id}/acknowledge | Potvrdit CT upozornění |
Architektonické poznámky
Background service
CertificateMonitorService běží jako asyncio smyčka (30s tick). Používá FOR UPDATE SKIP LOCKED pro bezpečnou distribuci práce mezi více workery. Samotná kontrola používá asyncio.open_connection s ssl.create_default_context() + cryptography.x509 parsování — žádná enumerace cipher suites, typicky dokončena za méně než 2 sekundy.
Databázové tabulky
| Tabulka | Popis |
|---|---|
| cert_monitors | Co sledovat — FQDN, port, interval, notify prahy |
| cert_checks | Historie kontrol — plný detail certifikátu na běh (CN, SANs, grade, klíč, fingerprint...) |
| cert_ct_alerts | CT transparency nálezy — unikátní per (monitor_id, serial_number) |