Šablony certifikátů¶
Návrh projektových šablon certifikátů — vysvětlení každého parametru
Verze dokumentu: 1.0.0
Poslední aktualizace: 2026-06-30
1. Dva systémy šablon¶
MazeVault nabízí dva odlišné, vzájemně se doplňující systémy šablon. Pochopení rozdílu je zásadní — nacházejí se na různých místech a slouží různým účelům.
| Systém | Kde | Účel |
|---|---|---|
| Konfigurační šablony | Certifikáty → Šablony (katalog PKI pro celou organizaci) | Znovupoužitelné profily certifikátů na úrovni organizace, navázané přímo na CA. Používají se při ad‑hoc žádosti o certifikát. |
| Projektové šablony | Projekt → Nastavení → Šablony | Šablony omezené na jeden projekt. Projektová šablona má kategorii (secrets, certificates nebo keys) a podtyp. Projektová šablona kategorie certificates řídí vydávání certifikátů pro daný projekt. |
graph TD
A["Projektová šablona<br/>category = certificates"] -->|"protocol_config.certificate_template_id"| B["Šablona certifikátu<br/>(podřízený záznam)"]
B --> C["Vydávací engine<br/>(SignCSR)"]
C --> D["Vydaný X.509 certifikát"]
classDef proj fill:#EBF5FB,stroke:#2196F3,stroke-width:2px,color:#1565C0
classDef cert fill:#E8F5E9,stroke:#4CAF50,stroke-width:2px,color:#2E7D32
class A proj
class B,C,D cert
Když vytvoříte projektovou šablonu kategorie certificates, MazeVault na pozadí
vytvoří podřízenou šablonu certifikátu a propojí ji přes
protocol_config.certificate_template_id. Pole popsaná zde jsou klíče
protocol_config této projektové šablony; deserializují se do podřízené šablony
certifikátu, kterou spotřebovává vydávací engine.
2. Odkud pochází Subject¶
Subject certifikátu (Common Name, Organization, OU, Email, Locality, State, Country) a jeho Subject Alternative Names nejsou pevně dané v kroku Nastavení certifikátu. Jsou řízeny krokem Proměnné šablony.
V kroku Proměnné definujete proměnné jako COMMON_NAME, ORGANIZATION,
ORGANIZATIONAL_UNIT, EMAIL, LOCALITY, STATE, COUNTRY a SAN_DNS. Ty se
vyhodnocují pro každou žádost, což umožňuje znovu používat jedinou šablonu pro mnoho
konkrétních certifikátů. Krok Nastavení certifikátu proto konfiguruje pouze politiku
vydávání a kryptografické parametry — nikdy doslovné hodnoty subjektu.
Jediný přepínač související se subjektem, který se nachází v Nastavení certifikátu,
je Přidat Common Name do SAN (add_cn_to_san), protože řídí chování SAN, nikoli
hodnotu subjektu.
3. Nastavení certifikátu — referenční přehled parametrů¶
Krok Nastavení certifikátu je rozdělen do orámovaných karet. Každé pole odpovídá klíči
protocol_config. Sloupec Kde se uplatní uvádí, kdy hodnota nabývá účinku:
- Vydaný certifikát — hodnota se zapíše do vydaného X.509 certifikátu.
- Validace / brána — hodnota omezuje nebo podmiňuje žádosti, ale nezapisuje se do certifikátu.
- Generování CSR — hodnota je výchozí, použitá pouze když MazeVault generuje pár klíčů a CSR (nepřepisuje CSR dodané zákazníkem).
- Rotace — hodnota řídí automatickou obnovu/rotaci.
- Směrování — hodnota volí vydávající autoritu.
Identita a záměr¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
code |
Kód šablony | string | odvozeno z názvu | unikátní v rámci org | Metadata | web-server-tls |
cert_type |
Typ certifikátu | enum | "" (Auto) |
jedna z hodnot katalogu, nebo prázdné pro odvození z podtypu | Metadata / záměr vydání | ssl_tls |
Vydávající CA¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
ca_account_id |
CA účet | uuid | žádný | musí odkazovat na nakonfigurovaný CA účet | Směrování | 550e8400-… |
ca_product_id |
CA produkt | uuid | žádný | vyžaduje CA účet | Směrování | 550e8400-… |
signature_algorithm |
Algoritmus podpisu | enum | "" (výchozí CA) |
odpovídá názvům Go x509.SignatureAlgorithm |
Vydaný certifikát | SHA256WithRSA |
dcv_method |
Metoda ověření domény | enum | "" (výchozí poskytovatele/účtu) |
email, dns, file; zobrazuje se jen u poskytovatelů, kteří ověřují domény |
Objednávka u CA (komerční CA) | dns |
order_years |
Délka předplatného (roky) | int | žádný (= 1 rok) | 1–6, omezeno max_years produktu; zobrazuje se jen u CA s předplatným (SSLMarket) |
Objednávka u CA — délka placené objednávky, ne certifikátu | 2 |
tech_contact |
Technický kontakt | objekt | žádný (výchozí z účtu CA) | klíče title, firstname, lastname, email, tel |
Objednávka u CA (komerční CA); žádost může přepsat | {"email": "pki@example.com"} |
challenge_type |
Politika ACME výzvy | enum | auto |
auto, dns-01, http-01; zobrazuje se jen u ACME vydavatelů (vč. SSLMarket v režimu ACME — pouze http-01) |
Objednávka u CA (ACME) | http-01 |
Pole označená „zobrazuje se jen…“ řídí deklarované schopnosti vydávajícího CA účtu (template_form), ne pevně zadrátované seznamy poskytovatelů. Žádost může přepsat dcv_method, ca_product_id, order_years, tech_contact a voucher tam, kde to poskytovatel dovoluje; hodnota ze šablony je výchozí, kterou žádost dědí.
Klíč a algoritmus¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
key_algorithm |
Algoritmus klíče | enum | RSA |
RSA, ECDSA, Ed25519 |
Generování CSR | ECDSA |
key_size |
Výchozí velikost klíče | integer | 2048 |
platná velikost pro algoritmus (RSA: 2048/3072/4096; ECDSA: 256/384/521; Ed25519: 256) | Generování CSR | 3072 |
allowed_key_sizes |
Povolené velikosti klíče | integer[] | [] (libovolná) |
podmnožina platných velikostí pro algoritmus | Validace / brána (vynuceno při vydání) | [2048, 4096] |
Povolené velikosti klíče se vynucují při odeslání i při podpisu
Když je allowed_key_sizes neprázdné, nahrané CSR, jehož bitová délka veřejného klíče
není v seznamu, je odmítnuto už při odeslání požadavku — ještě před kontaktováním CA —
a interní CA kontrolu zopakuje při podpisu. Prázdný seznam znamená, že je přijata
libovolná velikost platná pro daný algoritmus. Systémové šablony (mTLS agentů a
gateway) jsou vyjmuty.
Politika Subject Alternative Names (SAN)¶
| JSON klíč | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
allow_additional_sans |
Povolit další SAN | boolean | true |
— | Validace / brána (pouze generované CSR) | false |
max_san_count |
Max. počet SAN | integer | 100 |
> 0 | Validace / brána (generované CSR; pro nahrané CSR použijte san_config.max_san_count) |
10 |
san_config.allowed_san_types |
Povolené typy SAN | string[] | ["dns"] |
podmnožina dns, ip, email, uri |
Validace / brána (generované i nahrané CSR) | ["dns","ip"] |
san_config.san_validation_pattern |
Validační vzor SAN | regex | — | platný regulární výraz Go | Validace / brána (generované i nahrané CSR) | ^[a-z0-9.-]+\.example\.com$ |
san_config.max_san_count |
Max. počet SAN (nahrané CSR) | integer | — | > 0 | Validace / brána (nahrané CSR) | 5 |
san_config.require_san |
Vyžadovat SAN | boolean | false |
— | Validace / brána (nahrané CSR) | true |
Nahrané CSR se validují pouze proti explicitním klíčům v san_config
Šablony bez san_config nadále přijímají každé nahrané CSR, takže existující šablony
nezačnou odmítat IP nebo URI SAN. Jakmile šablona v san_config deklaruje
allowed_san_types, san_validation_pattern, max_san_count nebo require_san, musí
nahrané CSR tato pravidla splnit. Sloupce allow_additional_sans a max_san_count na
nejvyšší úrovni platí pouze pro požadavky generované MazeVaultem. require_san = true
odmítne CSR pouze s CN bez SAN, které moderní TLS klienti odmítají; používejte ho pro
šablony TLS serverů.
Platnost¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
validity_days |
Platnost (dny) | integer | 365 |
> 0 | Vydaný certifikát (NotAfter = NotBefore + validity_days) |
90 |
min_validity_days |
Min. platnost (dny) | integer | 30 |
≤ max_validity_days |
Validace / brána | 30 |
max_validity_days |
Max. platnost (dny) | integer | 825 |
≥ min_validity_days |
Validace / brána | 825 |
Použití klíče a rozšířené použití klíče¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
key_usage |
Použití klíče | string[] | [] |
podmnožina 9 bitů dle RFC 5280 §4.2.1.3 | Vydaný certifikát | ["digitalSignature","keyEncipherment"] |
extended_key_usage |
Rozšířené použití klíče | string[] | [] |
podmnožina 6 podporovaných EKU OID | Vydaný certifikát | ["serverAuth","clientAuth"] |
add_cn_to_san |
Přidat CN do SAN | boolean | true |
— | Generování CSR (chování SAN) | true |
Hodnoty Použití klíče: digitalSignature, nonRepudiation, keyEncipherment,
dataEncipherment, keyAgreement, keyCertSign, cRLSign, encipherOnly,
decipherOnly.
Hodnoty Rozšířeného použití klíče: serverAuth, clientAuth, codeSigning,
emailProtection, timeStamping, ocspSigning.
Omezení a politiky CA¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
is_ca |
Vydat jako CA certifikát | boolean | false |
— | Vydaný certifikát (Basic Constraints) | false |
max_path_length |
Max. délka cesty | integer | 0 |
smysluplné pouze když je is_ca true |
Vydaný certifikát (pathLenConstraint) | 0 |
policy_identifiers |
Identifikátory politik | string[] | [] |
OID v tečkovém zápisu | Vydaný certifikát (certificate policies) | ["1.3.6.1.4.1.311.21.10"] |
certificate_policies |
Politiky certifikátu | string[] | [] |
OID v tečkovém zápisu | Vydaný certifikát (sloučeno s policy_identifiers, deduplikováno) |
["2.23.140.1.2.1"] |
Délka cesty CA a zpracování politik
Když je is_ca true a max_path_length je 0, certifikát je omezen na pathlen:0
(může vydávat koncové certifikáty, ale ne další CA). policy_identifiers a
certificate_policies se slučují a deduplikují; neplatné OID řetězce se přeskočí
s varováním, místo aby přerušily vydání.
Obnova a rotace¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
auto_renewal_enabled |
Automatická obnova | boolean | true |
— | Rotace | true |
renewal_days_before_expiry |
Dnů před vypršením pro obnovu | integer | 30 |
> 0 | Rotace | 30 |
renewal_key_policy |
Politika klíče při obnově | enum | regenerate |
regenerate nebo reuse |
Rotace | regenerate |
Přednost politiky klíče při obnově
Šablona, která pevně nastaví regenerate (generovat nový pár klíčů při obnově),
přepíše volnější organizační politiku znovupoužití klíče. reuse zachová stávající
soukromý klíč. Když není v šabloně nastavena žádná hodnota, uplatní se organizační
politika obnovy.
Governance¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
require_approval |
Vyžadovat schválení před vydáním | boolean | false |
— | Validace / brána | false |
Integrace s externí CA¶
| Klíč JSON | Popisek v UI | Typ | Výchozí | Omezení | Kde se uplatní | Příklad |
|---|---|---|---|---|---|---|
external_template_name |
Název externí šablony | string | "" |
použito pouze s externí CA (např. ADCS) | Směrování (externí CA) | WebServerV2 |
external_template_oid |
OID externí šablony | string | "" |
OID v tečkovém zápisu | Směrování (externí CA) | 1.3.6.1.4.1.311.21.8.1 |
4. Co se zapíše do vydaného certifikátu¶
Pro rychlou orientaci zde je rozdělení každého řízeného pole:
- Zapsáno do vydaného certifikátu:
validity_days,key_usage,extended_key_usage,is_ca,max_path_length,policy_identifiers,certificate_policies,signature_algorithm. - Pouze validace / brána (není v certifikátu):
allowed_key_sizes,min_validity_days,max_validity_days,require_approval. - Chování rotace:
auto_renewal_enabled,renewal_days_before_expiry,renewal_key_policy. - Pouze výchozí hodnoty pro generování CSR:
key_algorithm,key_size,add_cn_to_san. Uplatní se, když MazeVault generuje pár klíčů a CSR; nepřepisují CSR dodané zákazníkem (s výjimkouallowed_key_sizes, které se vynucuje při podpisu pro všechny CSR). - Směrování / výběr:
ca_account_id,ca_product_id,external_template_name,external_template_oid.
5. Související příručky¶
- Správa certifikátů — žádost, odvolání, import a export certifikátů.
- Automatizace certifikátů ACME — automatické vydávání přes ACME.