Přeskočit obsah

Správa certifikátů

PKI operace — Žádosti, revokace, import, export a správa CRL

Verze dokumentu: 1.3.0
Poslední aktualizace: 2026-06-21


1. Životní cyklus certifikátu

graph LR
    A["📝 Žádost<br/>(CSR)"] --> B["⏳ Schválení"]
    B --> C["✅ Vydání"]
    C --> D["🔒 Aktivní"]
    D --> E["🔄 Obnova"]
    E --> C
    D --> F["❌ Revokace"]
    F --> G["📜 Aktualizace CRL"]
    D --> H["⏰ Expirace"]

    classDef request fill:#EBF5FB,stroke:#2196F3,stroke-width:2px,color:#1565C0
    classDef active fill:#E8F5E9,stroke:#4CAF50,stroke-width:2px,color:#2E7D32
    classDef warning fill:#FFF8E1,stroke:#FF9800,stroke-width:2px,color:#E65100
    classDef danger fill:#FFEBEE,stroke:#F44336,stroke-width:2px,color:#C62828

    class A,B request
    class C,D active
    class E,H warning
    class F,G danger

2. Žádost o certifikát

Přes webové rozhraní

  1. Přejděte na Certifikáty → Požádat o certifikát
  2. Zvolte Šablonu certifikátu nebo nakonfigurujte ručně:
Šablona Key Usage Extended Key Usage Typická platnost
Webový server Digital Signature, Key Encipherment Server Authentication 1 rok
Klientská autentizace Digital Signature Client Authentication 1 rok
Podpis kódu Digital Signature Code Signing 2 roky
E-mail (S/MIME) Digital Signature, Key Encipherment Email Protection 1 rok
  1. Vyplňte informace o subjektu:
  2. Common Name (CN): Primární doména nebo identifikátor
  3. Subject Alternative Names: Další domény a IP adresy
  4. Organizace, Země atd.: Dle požadavků vaší politiky
  5. Vyberte Vydávající CA
  6. Klikněte na Odeslat žádost

Přes API

curl -X POST https://vault.example.com/api/v1/certificates/csr \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "common_name": "api.example.com",
    "san_dns": ["api.example.com", "api-internal.example.com"],
    "key_type": "RSA",
    "key_size": 2048,
    "ca_id": "ca_root001",
    "project_id": "proj_abc123",
    "template": "web_server",
    "dcv_method": "dns",
    "order_years": 2,
    "tech_contact": {"firstname": "Jana", "lastname": "Nováková", "email": "pki@example.com"}
  }'

dcv_method, ca_product_id, order_years, requested_validity_days, tech_contact a voucher jsou volitelná přepsání pro komerční CA; vynechané hodnoty se dědí ze šablony a poté z účtu CA (viz Objednávky u komerční CA).

3. Schvalování certifikátů

V závislosti na politice vaší organizace:

Politika Chování
Automatické schválení Certifikát je vydán okamžitě po žádosti
Schválení administrátorem Certifikát přejde do stavu pending_approval; administrátor musí žádost schválit
Schválení správcem projektu Správce projektu může schválit certifikáty pro svůj projekt

Schválení žádosti

  1. Přejděte na Certifikáty → Čekající žádosti
  2. Přezkoumejte podrobnosti certifikátu
  3. Klikněte na Schválit nebo Zamítnout

4. Revokace certifikátu

Kdy revokovat

  • Privátní klíč byl kompromitován
  • Změnila se příslušnost držitele certifikátu
  • Certifikát byl nahrazen novým
  • Služba používající certifikát byla vyřazena z provozu

Postup revokace

  1. Přejděte na Certifikáty → Aktivní a najděte certifikát
  2. Klikněte na Revokovat
  3. Vyberte Důvod revokace (RFC 5280):
  4. keyCompromise — Privátní klíč je kompromitován
  5. affiliationChanged — Změnila se příslušnost subjektu
  6. superseded — Nahrazen novým certifikátem
  7. cessationOfOperation — Služba vyřazena z provozu
  8. certificateHold — Dočasné pozastavení (lze uvolnit)
  9. Přidejte volitelný komentář
  10. Klikněte na Potvrdit revokaci

CRL je po revokaci automaticky přegenerován.

Zrušení revokace certifikátu

Certifikáty revokované s důvodem certificateHold lze uvolnit:

  1. Přejděte na Certifikáty → Revokované a najděte certifikát
  2. Klikněte na Zrušit revokaci
  3. Potvrďte akci

5. Import certifikátů

Import jednotlivého certifikátu

  1. Přejděte na Certifikáty → Import
  2. Nahrajte nebo vložte:
  3. Certifikát (formát PEM, povinný)
  4. Privátní klíč (formát PEM, volitelný)
  5. Řetězec CA (formát PEM, volitelný)
  6. Vyberte cílový projekt
  7. Klikněte na Importovat

Hromadný import (PEM balíček)

  1. Přejděte na Certifikáty → Import → Hromadný import
  2. Nahrajte PEM balíček obsahující více certifikátů
  3. Vyberte cílový projekt
  4. Klikněte na Importovat

Systém analyzuje balíček, identifikuje jednotlivé certifikáty a importuje je s automatickou detekcí řetězce.

Import více souborů (certifikát + samostatný soubor s klíčem)

Pokud nahrajete více souborů najednou (např. server.pem a server.key), MazeVault při náhledu spáruje každý samostatný soubor .key s certifikátem, jehož veřejnému klíči odpovídá. Spárovaný certifikát zobrazí odznak Private Key a zdroj ve tvaru server.pem + server.key. Při importu se klíč odesílá společně se svým certifikátem v jednom požadavku, takže se uloží k danému certifikátu – včetně certifikátů, které už v MazeVaultu existují bez klíče (viz níže). Klíče, které neodpovídají žádnému nahranému certifikátu, jsou hlášeny jako chyba a nikdy se neimportují samostatně.

Doplnění privátního klíče k existujícímu certifikátu

Certifikáty podepsané z nahraného CSR jsou uloženy s custody klíče none, protože MazeVault privátní klíč nikdy neviděl. Totéž platí pro certifikáty importované bez klíče. Klíč lze pod správu MazeVaultu dostat dodatečně dvěma cestami – obě končí ve stejné backendové logice, která klíč před uložením ověří proti veřejnému klíči certifikátu:

  1. Detail certifikátu → Overview → Import private key (doporučeno). Nahrajte PEM soubor s klíčem, šifrovaný PEM klíč nebo PFX/P12 balíček, případně PEM klíč vložte. Požadavek je přivázán k danému certifikátu (expected_certificate_id), takže materiál patřící jinému certifikátu je odmítnut místo založení nového záznamu.
  2. Certificates → Import: importujte PFX/P12, PEM obsahující certifikát i klíč, nebo více souborů (certifikát + jeho .key) do stejného projektu. MazeVault existující záznam rozpozná podle SHA-256 otisku a klíč k němu připojí.

Pravidla platná pro obě cesty:

  • Klíč musí odpovídat certifikátu; nesoulad vrátí private key does not match certificate.
  • Certifikát, který už privátní klíč má (lokálně nebo externě), se nikdy nepřepíše; import vrátí already has a private key.
  • Import do jiného projektu, než ve kterém certifikát leží, je odmítnut.
  • V Orchestrator Mode se klíč odloží do zvolené integrace secret manageru; lokální uložení není nabízeno.
  • Opakovaný import certifikátu bez klíče, který už existuje, vrátí nápovědu, jak klíč doplnit.

Doplnění certifikátu, který nemá tělo

Spravovaný certifikát adoptovaný z discovery nebo synchronizovaný z výpisu CA může obsahovat pouze metadata (bez těla certifikátu), pokud vznikl dříve, než MazeVault začal těla ukládat, nebo pokud ho objevil jen agent na starém protokolu. Takový certifikát nejde exportovat, nasadit ani obnovit a privátní klíč k němu nelze ověřit. Doplní se kteroukoli z těchto cest — výsledek je totožný:

  1. Automaticky — příští sken agenta nebo synchronizace s CA, která certifikát uvidí, tělo připojí (párování podle SHA-256 otisku).
  2. Detail certifikátu → Complete certificate — nahrajte veřejný certifikát (CRT/PEM/DER), volitelně spolu s privátním klíčem, nebo PFX/P12. Nahraný materiál musí odpovídat uloženému otisku.
  3. Certificates → Import — import samotného veřejného certifikátu záznam doplní místo hlášení „již existuje“; položka výsledku importu nese message: "existing certificate record completed with the uploaded certificate body".

Tělo se uloží spolu s identitou z něj odvozenou (serial, otisky, subjekt, vydavatel, platnost, algoritmy, key usage, SAN, typ). Stav active se aktualizuje podle platnosti certifikátu; revokovaný nebo čekající záznam si stav ponechá. Pokud je s certifikátem dodán privátní klíč: připojí se, nemá‑li záznam custody; tiše se přijme, shoduje‑li se s existující custody; a je odmítnut s explicitní chybou až po uložení těla, pokud se neshoduje. Lokálně uložený klíč, který dříve nešlo ověřit, se ověří při doplnění těla; neshoda se označí v metadatech certifikátu a v auditu, ale klíč se nikdy nesmaže — zkontrolujte ho a nahraďte vědomě.

Validace nahraného CSR vůči šabloně

Nahrané CSR se kontroluje proti zvolené šabloně ještě před odesláním do CA, takže porušení politiky selže okamžitě:

  • CSR musí být správně utvořené a jeho vlastní podpis musí být platný.
  • Pokud šablona definuje allowed_key_sizes, musí být velikost klíče z CSR v seznamu (např. RSA-4096 CSR je odmítnut šablonou, která povoluje jen 2048/3072).
  • Pokud má šablona explicitní SAN politiku v san_config (allowed_san_types, san_validation_pattern, max_san_count), musí jí SAN položky z CSR vyhovět. Sloupce allow_additional_sans / max_san_count na nejvyšší úrovni se na nahraná CSR neuplatňují.
  • Nastavením san_config.require_san = true šablona odmítne CSR pouze s CN bez SAN, které moderní TLS klienti neakceptují.
  • Systémové šablony (mTLS agentů a gateway) jsou z těchto kontrol vyjmuty.

Pokud CA vyžaduje ruční schválení (např. ADCS s manager approval), požadavek přejde do stavu submitted_to_ca a certifikát se po schválení v CA dokončí automaticky. Pokud automatické vydání selže z jiného důvodu, automaticky schválený požadavek skončí ve stavu failed se zaznamenanou chybou, zatímco ručně schválený požadavek se vrátí do pending, aby jej schvalovatel mohl zopakovat.

Příprava obnovy po importu

  • Pokud je importovaný certifikát navázaný na spravovaný CA účet a splňuje předpoklady pro rotaci, MazeVault může automaticky připravit metadata obnovy.
  • Automaticky připravené rotační konfigurace zůstávají vypnuté, dokud je operátor výslovně nepovolí. Tím se zabrání tiché rotaci soukromého klíče ihned po importu.
  • Počáteční lead time obnovy se určuje z efektivní hierarchie politik certifikátu, šablony a CA účtu, takže importovaný certifikát převezme zamýšlené okno obnovy místo skrytého defaultu.

Per-certifikátová politika obnovy klíče

Pro obnovitelné certifikáty lze přepsat zacházení s klíčem na úrovni jednotlivého certifikátu:

  • Regenerate při obnově vygeneruje nový privátní klíč.
  • Reuse zachová stávající klíčový materiál, pokud to provider, custody režim a downstream deployment cesta podporují.
  • Ponechání hodnoty prázdné předá rozhodnutí šabloně nebo vyšší politice.

Volbu Reuse používejte jen tam, kde downstream systémy vyžadují kontinuitu klíče nebo je opětovné vystavení příliš nákladné.

Kontrola readiness před zapnutím automatizace

  • Před zapnutím automatizace certifikátu zkontrolujte pohled Project Rotations.
  • Zdroje obnovy i deploymentu nyní zobrazují inline readiness a preflight stav.
  • Manual Review Required znamená, že MazeVault neumí cíl automaticky ověřit a operátor by měl před produkčním rolloutem potvrdit deployment cestu ručně.

6. Export certifikátů

Formáty exportu

Formát Přípona Zahrnuje klíč Případ použití
PEM .pem, .crt Volitelně Linux/Unix servery, Apache, Nginx
DER .der, .cer Ne Java aplikace, Windows
PKCS#12 .p12, .pfx Ano (chráněno heslem) Windows, import do Java KeyStore

Postup exportu

  1. Přejděte na stránku detailu certifikátu
  2. Klikněte na Export
  3. Vyberte formát a možnosti:
  4. Zahrnout řetězec CA
  5. Zahrnout privátní klíč (vyžaduje oprávnění certificates.export_key)
  6. Nastavit heslo (pro PKCS#12)
  7. Stáhněte soubor

Export privátního klíče

Export certifikátu s privátním klíčem je bezpečnostně citlivá operace zaznamenaná v auditním protokolu. Zajistěte bezpečný přenos privátního klíče.

Jak se určuje řetězec CA

Se zapnutou volbou Zahrnout řetězec CA exportuje MazeVault efektivní řetězec vydavatelů certifikátu. Tentýž řetězec se zobrazuje na záložce Chain v detailu certifikátu, vrací ho API a instalují ho agenti — všichni konzumenti tedy vidí identický materiál.

  1. Uložený řetězec má přednost. Řetězec zachycený při importu nebo vydání certifikátu (např. z PFX nebo od CA při vydání) se exportuje přesně tak, jak je uložen. MazeVault k němu nikdy nic nepřidává — pokud vydavatel dodal leaf + intermediate bez rootu, dostanete přesně to.
  2. Inventář jen tehdy, když nic uloženo není. Nemá-li certifikát uložený řetězec (typicky podřízená CA importovaná samostatně), hledá MazeVault vydavatele mezi CA certifikáty spravovanými v téže organizaci — včetně interní CA. Kandidát se použije jen tehdy, když kryptograficky ověří podpis certifikátu; shoda jména sama o sobě nikdy nestačí. Řetězec se sleduje až k self-signed rootu.
  3. Transparentnost. Záložka Chain označí zdroj (Stored with certificate / Resolved from inventory / No chain), ukáže, zda je řetězec úplný až k rootu, a vypíše varování, např. revokovaného vydavatele. Zobrazení ani export do certifikátu nic nezapisují.

Export podřízené CA

Aby se podřízená CA exportovala včetně svého rootu, naimportujte root CA certifikát jednou do libovolného projektu téže organizace. Od té chvíle se root automaticky přidává do exportu, do záložky Chain i do nasazení agentem.

Nasazení a trust store

Agenti rozdělují exportovaný balíček na všech cílech stejně: certifikát s klíčem jde do keystore (JKS, PKCS#12, Windows My), řetězec vydavatelů do trust store (Windows Root/CA, adresář CA v Linuxu), pokud má agent zapnutou volbu install_chain_to_trust_store. Cíle Windows Root/CA dostávají pouze veřejné certifikáty — nikdy privátní klíč.

7. Automatizace certifikátů pomocí ACME

MazeVault obsahuje vestavěný ACME server (RFC 8555), který umožňuje automatické vydávání certifikátů přímo z Kubernetes pomocí cert-manager.

Rychlý přehled

  1. Vygenerujte EAB přihlašovací údaje v MazeVault (Nastavení organizace → Přístup ACME)
  2. Vytvořte Kubernetes Secret s HMAC klíčem
  3. Nasaďte ClusterIssuer směřující na ACME adresář vašeho MazeVault
  4. Anotujte Ingress nebo vytvořte Certificate resources — cert-manager se postará o zbytek
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: mazevault-issuer
spec:
  acme:
    server: https://vault.example.com/api/acme/directory
    externalAccountBinding:
      keyID: "VAŠE_EAB_KEY_ID"
      keySecretRef:
        name: mazevault-eab-secret
        key: secret
    privateKeySecretRef:
      name: mazevault-acme-account-key
    solvers:
      - http01:
          ingress:
            ingressClassName: nginx

Interní domény (.local, .internal, .lan, .corp) jsou automaticky schváleny bez HTTP-01 výzvy.

Kompletní ACME návod

Podrobné pokyny krok za krokem, YAML příklady, ACME profily a řešení problémů najdete v dedikovaném Návodu pro automatizaci certifikátů pomocí ACME.


8. Správa CRL

Seznam revokovaných certifikátů (CRL)

MazeVault automaticky generuje CRL při revokaci certifikátů. CRL jsou dostupné na:

Formát URL
DER https://vault.example.com/api/v1/crl
PEM https://vault.example.com/api/v1/crl/pem

Distribuční bod CRL

Nakonfigurujte CRL Distribution Point ve svých certifikátech tak, aby odkazoval na vaši MazeVault CRL URL. Tato informace je automaticky zahrnuta v certifikátech vydaných MazeVault CA.

Vynucená regenerace CRL

V případě potřeby ručně přegenerujte CRL:

  1. Přejděte na Certifikáty → CRL
  2. Klikněte na Přegenerovat CRL
  3. Vyberte typ: Úplný nebo Delta

8. OCSP validace

OCSP poskytuje ověřování stavu certifikátu v reálném čase jako alternativu k CRL:

Vlastnost CRL OCSP
V reálném čase ❌ (periodické generování) ✅
Šířka pásma Vyšší (celý seznam) Nižší (per certifikát)
Soukromí Klient stahuje vše Klient dotazuje konkrétní certifikát
Offline podpora ✅ (uložený CRL) ❌ (vyžaduje připojení)

OCSP URL

https://vault.example.com/ocsp

Testování OCSP

openssl ocsp \
  -issuer ca.pem \
  -cert server.pem \
  -url https://vault.example.com/ocsp \
  -noverify

9. Objednávky u komerční CA (SSLmarket)

Veřejné TLS certifikáty nakupované přes komerční CA se chovají jinak než interní nebo ACME vydávání: objednávka je placená, nelze ji přes API zrušit, zpracovává se asynchronně a je vázaná na víceleté předplatné, které přežije každý jednotlivý certifikát. MazeVault proto s takovou objednávkou pracuje jako s dlouhotrvajícím procesem, ne jako s jedním voláním.

Odkud se berou nastavení (žádost → šablona → účet CA)

Nastavení Žádost (per certifikát) Šablona certifikátu Účet CA
Produkt (úroveň validace, limity wildcard/SAN) ca_product_id ca_product_id výchozí product_code
Metoda ověření domény dcv_method (dns, email, file) dcv_method dv_auth_method
Délka předplatného (roky) order_years order_years 1 rok
Technický kontakt tech_contact tech_contact výchozí tech_*
Voucher voucher — voucher
Vlastník, oprávněná osoba, fakturace — — owner_*, auth_*, invoice_*

Žádost má přednost, šablona doplní to, co žádost nechá prázdné, a účet CA dodá obchodní údaje. Dialog Žádost o certifikát zobrazuje sekci Nastavení objednávky u CA přesně s těmi poli, která vydávající CA dovoluje přepsat; každé pole ukazuje hodnotu ze šablony jako svůj výchozí stav, takže prázdné pole vždy znamená „zdědit“.

Před odesláním objednávky se složená nastavení ověří proti katalogu produktů synchronizovanému z CA (nepodporovaná metoda validace, příliš mnoho SAN, wildcard na ne-wildcard produktu, předplatné delší, než produkt dovoluje). Žádost, kterou by CA odmítla, proto selže už při podání se srozumitelnou zprávou — nikdy jako placená objednávka. Složená nastavení včetně zdrojů se ukládají k žádosti (issuance_spec) a zobrazují v jejím detailu.

Roky předplatného nejsou platnost certifikátu

Od března 2026 platí veřejné TLS certifikáty nejvýše 200 dní. order_years je délka placené objednávky u SSLmarketu (1–6 let podle produktu). V rámci předplatného vydává CA navazující certifikáty sama — viz níže.

Asynchronní vydávání a pozorné čekání

  1. Podání — žádost je ve stavu submitting_to_ca, dokud se objednávka zakládá. Pokud CA neodpoví jednoznačně (timeout, 5xx, restart), MazeVault neopakuje naslepo: dohledá objednávku podle přesného CSR a buď na ni naváže, nebo po ochranné lhůtě vrátí žádost do stavu schváleno. Pro jednu žádost nikdy nevznikne druhá objednávka.
  2. Čekání — žádost je submitted_to_ca; MazeVault se CA dotazuje s rostoucím intervalem (2 → 5 → 15 → 60 minut), dokud se stav na straně CA nemění, a interval resetuje, jakmile se změní.
  3. Eskalace — když se objednávka nepohne déle, než určuje nastavení účtu CA Upozornit, když objednávka nepostoupí (hodin) (výchozí 24 h), MazeVault založí jeden incident, okomentuje DCV tiket (pokud existuje) a čeká dál. Placenou objednávku nikdy sám nevzdá.
  4. Vydání — certifikát se stáhne, uloží s external_order_id a nasazení pokračuje jako u každého jiného certifikátu.

Ověření kontroly nad doménou (DCV)

CA před vydáním vyžaduje důkaz kontroly nad doménou. Jak se důkaz umístí, se rozhoduje pro každou objednávku:

Situace Co udělá MazeVault Co uděláte vy
DNS validace a účet CA má nastaveného DNS poskytovatele (dns_solver_type + dns_solver_config) Sám vytvoří TXT záznam _dnsauth.<doména>, počká na CA a záznam poté odstraní Nic
DNS/souborová validace a organizace má ticketing integraci (Jira) Založí jeden tiket s přesným záznamem (název, typ, hodnota) a číslem objednávky; po validaci CA pokračuje automaticky; tiket zavře s komentářem Přidáte záznam z tiketu do DNS nebo na web server
Ani jedno Založí incident dcv_manual_action_required a zobrazí záznam v panelu DCV Přidáte záznam; MazeVault se dotazuje dál
E-mailová validace Čeká na schvalovací e-mail; Znovu odeslat e-mail požádá CA o nové odeslání Kliknete na odkaz v e-mailu od CA

Po umístění záznamu není v MazeVaultu třeba nic potvrzovat — CA ověří, MazeVault si toho všimne a pokračuje.

Obnova certifikátu z předplatného (navazující certifikát)

Když má být certifikát vydaný v rámci objednávky SSLmarket obnoven, MazeVault nejprve prověří objednávku:

  • Předplatné stále běží (nebo CA objednávku obnovila do navazující objednávky, nebo probíhá reissue): obnova přejde do awaiting_ca_followup. Nová objednávka se nezakládá. Jakmile CA vydá navazující certifikát, MazeVault jej stáhne, ověří, že používá stejný veřejný klíč jako spravovaný certifikát (privátní klíč zůstává, úschova se dědí), provede preflight nasazení, nasadí, spustí post-instalační kroky a teprve poté označí původní certifikát jako nahrazený. Pokud se původní certifikát blíží expiraci a navazující se neobjevil, založí se jeden incident subscription_followup_overdue.
  • Navazující certifikát byl vydán s jiným klíčem (např. ruční reissue v portálu SSLmarket s novým CSR): MazeVault jej nemůže nasadit — obnova přejde do manual_review s incidentem subscription_followup_key_mismatch. Buď objednávku znovu vydejte se spravovaným klíčem, nebo nový klíč importujte, nebo spusťte obnovu s volbou Založit u CA novou objednávku.
  • Předplatné končí s tímto certifikátem: založí se nová objednávka, jak je popsáno výše.

Certifikáty objevené z účtu CA nesou číslo objednávky také, takže se tato logika týká i adoptovaných certifikátů.

Revokace

API SSLmarketu revokuje pouze certifikáty DigiCert Client Premium (S/MIME). TLS certifikáty objednané přes SSLmarket se revokují v zákaznickém portálu SSLmarket; MazeVault tuto poznámku zobrazuje ve formulářích šablony i žádosti.

Stavy obnovy a jejich význam

Stav Význam Vaše akce
submitting_to_ca Objednávka se zakládá; při nejasném výsledku se dohledá podle CSR Žádná
submitted_to_ca Objednávka přijata; čeká se na CA Žádná
pending_dcv Čeká se na ověření domény (viz tabulka výše) Podle způsobu umístění
awaiting_ca_followup Předplatné běží; čeká se na navazující certifikát od CA Žádná
manual_review Automatické pokračování není bezpečné; viz incident Rozhodnout: reissue / import klíče / nová objednávka
deploying Certifikát přijat; nasazuje se — původní certifikát zůstává aktivní Žádná
failed s možností pokračovat Nasazení / post-instalace / předání selhalo na některých cílech; nic nebylo předáno. Dokud položka existuje, nová obnova se nespustí automaticky ani ručně (vznikla by druhá placená objednávka) Opravte cíl a klikněte Pokračovat v obnově — znovu se nasadí jen selhané cíle; nebo položku explicitně Zrušte

Související


Architektura pipeline vydávání certifikátů

Následující diagram zobrazuje kompletní tok od požadavku v prohlížeči až po podepsaný certifikát pro všechny podporované typy CA.

Viz anglická verze dokumentace pro plný Mermaid diagram a tabulku architektonických rozhodnutí (2026-06-21): certificate-management (EN)

Klíčová opravena chyby (2026-06-21)

Komponenta Chyba Oprava Migrace
mergeTemplates Alias ValidDays nebyl synchronizován po dědení → 1-denní certifikáty na Smallstep merged.ValidDays = child.ValidityDays —
Všichni CA providři Čtou ValidDays (alias) místo ValidityDays (DB sloupec) effectiveDays := template.ValidityDays —
ResolveTemplateForProject OverrideValidityDays v project_template_assignments nebyl nikdy aplikován Nová funkce ResolveTemplateForProject —
IssueCertificate CA lookup UUID prohledáváno jen v organization_ca_accounts Dual-probe: organization_ca_accounts → fallback certificate_authorities —
SubmitProjectCSR OrganizationID nebyl nastaven Ctení org_id z JWT kontextu —
ACME FinalizeOrder strings.Contains pro ADCS pending — křehké, dead-end při schválení errors.As + pole adcs_request_id + 5-min poller 000165
findOrderByCert LIMIT 500 full scan — revokace selhává u velkých tenantů JOIN podle sériového čísla —
getIntegrationByProvider Systémový first-match → únik klíčů mezi tenanty Scope přes WithKeyOffloadOrgID(ctx, orgID) —
Azure KV reader path Dvojité base64 kódování při načítání klíče Dekodování base64 při načtení —