Přeskočit obsah

API pro certifikáty

Správa životního cyklu certifikátů — žádost, vydání, odvolání, obnovení, import/export

Verze dokumentu: 1.1.0
Poslední aktualizace: 2026-04-04


Přehled endpointů

Metoda Endpoint Popis
POST /api/v1/certificates/csr Odeslat žádost o podpis certifikátu (CSR)
GET /api/v1/certificates Zobrazit certifikáty
GET /api/v1/certificates/:id Získat detail certifikátu
POST /api/v1/certificates/:id/approve Schválit čekající CSR
POST /api/v1/certificates/:id/reject Zamítnout čekající CSR
POST /api/v1/certificates/:id/revoke Odvolat certifikát
POST /api/v1/certificates/:id/unrevoke Zrušit odvolání certifikátu
GET /api/v1/certificates/:id/export Exportovat certifikát
POST /api/v1/certificates/import Importovat certifikát
POST /api/v1/certificates/import/file Import souboru (PEM/DER/PFX)
POST /api/v1/certificates/import/preview Náhled importu
POST /api/v1/certificates/import/bulk Hromadný import (PEM balík)
GET /api/v1/certificates/:id/status Získat stav odvolání
POST /api/v1/certificates/:id/archive Archivovat certifikát
POST /api/v1/certificates/:id/restore Obnovit certifikát z archivu
DELETE /api/v1/certificates/:id/permanent Trvalé smazání
POST /api/v1/certificates/:id/renew Obnovit (renew) certifikát
GET /api/v1/certificates/:id/renewal-history Historie obnovení
GET /api/v1/certificates/:id/rotation/config Konfigurace rotace
PUT /api/v1/certificates/:id/rotation/config Aktualizovat konfiguraci rotace
POST /api/v1/certificates/:id/rotation/trigger Spustit rotaci
GET /api/v1/certificates/:id/rotation/history Historie rotace
CRUD /api/v1/certificates/:id/targets Správa cílů rotace
GET /api/v1/ca/:id/crl Stáhnout CRL (DER, per-CA)
POST /api/v1/ca/:id/crl/regenerate Vynutit regeneraci CRL

Odeslání CSR

Backend očekává předem vygenerovaný CSR v PEM formátu — klíčové páry a pole subjektu jsou zakódovány klientem před odesláním.

POST /api/v1/certificates/csr HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json

{
  "csr_pem": "-----BEGIN CERTIFICATE REQUEST-----\nMIIC...\n-----END CERTIFICATE REQUEST-----",
  "template_id": "tmpl_web_server",
  "agent_id": "agent_abc123",
  "project_id": "proj_abc123",
  "requested_cn": "api.example.com"
}

Pole požadavku

Pole Typ Povinné Popis
csr_pem string PEM-kódovaný PKCS#10 CSR (vygenerovaný klientem)
template_id string ID šablony certifikátu (tmpl_web_server, tmpl_client_auth atd.)
agent_id string ID agenta odesílajícího CSR
project_id string ID projektu
requested_cn string Požadovaný Common Name (přepisuje CN v CSR, pokud to politika povoluje)

Odpověď 201 Created

{
  "id": "cert_def456",
  "common_name": "api.example.com",
  "status": "pending_approval",
  "serial_number": "01:AB:CD:EF:12:34",
  "ca_id": "ca_root001",
  "project_id": "proj_abc123",
  "requested_at": "2026-02-10T14:30:00Z",
  "requested_by": "usr_abc123"
}

Výpis certifikátů

GET /api/v1/certificates?project_id=proj_abc123&status=active&page=1 HTTP/1.1
Authorization: Bearer <token>

Parametry dotazu

Parametr Typ Popis
project_id string Filtrovat podle projektu
status string Filtrovat: active, pending_approval, revoked, expired
ca_id string Filtrovat podle vydávající CA
common_name string Vyhledávat podle CN (shoda podřetězce)
expiring_within_days integer Certifikáty s expirací do N dnů
page integer Číslo stránky
per_page integer Položek na stránku (max: 100)

Odpověď 200 OK

{
  "data": [
    {
      "id": "cert_def456",
      "common_name": "api.example.com",
      "serial_number": "01:AB:CD:EF:12:34",
      "status": "active",
      "issuer_cn": "MazeVault Internal CA",
      "not_before": "2026-02-10T00:00:00Z",
      "not_after": "2027-02-10T00:00:00Z",
      "key_type": "RSA-2048",
      "san": ["api.example.com", "api-internal.example.com"],
      "project_id": "proj_abc123"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 1
  }
}

Odvolání certifikátu

POST /api/v1/certificates/cert_def456/revoke HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json

{
  "reason": "keyCompromise",
  "comment": "Private key exposed in security incident"
}

Kódy důvodů odvolání (RFC 5280)

Kód Důvod Popis
0 unspecified Bez konkrétního důvodu
1 keyCompromise Kompromitace privátního klíče
2 caCompromise Kompromitace privátního klíče CA
3 affiliationChanged Změna příslušnosti subjektu
4 superseded Certifikát nahrazen novým
5 cessationOfOperation Subjekt ukončil provoz
6 certificateHold Dočasné pozastavení (reverzibilní)

Odpověď 200 OK

{
  "id": "cert_def456",
  "status": "revoked",
  "revocation_reason": "keyCompromise",
  "revoked_at": "2026-02-10T15:00:00Z",
  "revoked_by": "usr_abc123"
}

Import certifikátu

Jednotlivý import

POST /api/v1/certificates/import HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json

{
  "certificate_pem": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----",
  "private_key_pem": "***REMOVED***",
  "chain_pem": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----",
  "project_id": "proj_abc123"
}
Pole Typ Povinné Popis
certificate_pem string Certifikát v PEM formátu
private_key_pem string Privátní klíč v PEM formátu
chain_pem string Řetězec CA v PEM formátu
project_id string Cílový projekt

Hromadný import (PEM balík)

POST /api/v1/certificates/import/bulk HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json

{
  "pem_bundle": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
  "project_id": "proj_abc123"
}

Export certifikátu

GET /api/v1/certificates/cert_def456/export?format=pem HTTP/1.1
Authorization: Bearer <token>

Parametry dotazu

Parametr Hodnoty Popis
format pem, der, pkcs12 Formát exportu
include_chain true, false Zahrnout řetězec CA (výchozí: true)
include_key true, false Zahrnout privátní klíč (výchozí: false)
password string Heslo pro PKCS#12 export (povinné pro pkcs12)

Audit

Exporty certifikátů zahrnující privátní klíč jsou zaznamenány jako auditní události s vysokou závažností.


ACME protokol — endpointy

MazeVault poskytuje plnohodnotný ACME server (RFC 8555) pro automatizovanou správu certifikátů. Tyto endpointy využívají ACME klienti jako cert-manager.

Přehled ACME endpointů

Metoda Endpoint Popis
GET /api/acme/directory ACME adresář (discovery)
HEAD /api/acme/new-nonce Získat replay-protection nonce
POST /api/acme/new-nonce Získat replay-protection nonce
POST /api/acme/new-account Registrace nového účtu (vyžaduje EAB)
POST /api/acme/new-order Vytvoření objednávky certifikátu
POST /api/acme/order/:id Získat stav objednávky
POST /api/acme/authz/:id Získat detail autorizace
POST /api/acme/challenge/:id Spustit validaci výzvy
POST /api/acme/finalize/:id Odeslat CSR k podpisu
POST /api/acme/cert/:id Stáhnout vydaný certifikát

ACME adresář

GET /api/acme/directory HTTP/1.1

Odpověď 200 OK:

{
  "newNonce": "https://vault.example.com/api/acme/new-nonce",
  "newAccount": "https://vault.example.com/api/acme/new-account",
  "newOrder": "https://vault.example.com/api/acme/new-order",
  "revokeCert": "https://vault.example.com/api/acme/revoke-cert",
  "keyChange": "https://vault.example.com/api/acme/key-change",
  "meta": {
    "externalAccountRequired": true,
    "profiles": {
      "web-server": { "description": "Template: Web Server TLS" },
      "client-auth": { "description": "Template: Client Authentication" }
    }
  }
}

Správa EAB přihlašovacích údajů

Metoda Endpoint Oprávnění Popis
POST /api/v1/organizations/:id/acme-credentials ca:write Vytvořit EAB přihlašovací údaje
GET /api/v1/organizations/:id/acme-credentials ca:read Vypsat EAB přihlašovací údaje
DELETE /api/v1/organizations/:id/acme-credentials/:credId ca:write Odvolat EAB přihlašovací údaje

Vytvoření EAB přihlašovacích údajů

POST /api/v1/organizations/{org_id}/acme-credentials HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json

{
  "project_id": "proj_abc123",
  "default_template_id": "tmpl_def456",
  "cluster_label": "prod-aks-westeurope"
}

Odpověď 201 Created:

{
  "id": "cred_xyz789",
  "eab_key_id": "***REMOVED***",
  "eab_hmac_key": "***REMOVED***",
  "cluster_label": "prod-aks-westeurope",
  "created_at": "2026-03-14T10:00:00Z"
}

Jednorázový HMAC klíč

Hodnota eab_hmac_key je vrácena pouze při vytvoření. Uložte ji bezpečně — později ji nelze získat.

Podrobný návod na nastavení ACME s cert-managerem a příklady Kubernetes YAML najdete v Návodu pro automatizaci certifikátů pomocí ACME.


Distribuce CRL

CRL endpointy jsou per-CA. Každá CA má svůj vlastní distribuční bod CRL.

Stažení CRL

GET /api/v1/ca/ca_root001/crl HTTP/1.1
Accept: application/pkix-crl

Vrátí CRL ve formátu DER pro zadanou CA.

Vynucení regenerace CRL

POST /api/v1/ca/ca_root001/crl/regenerate HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json

{
  "type": "full"
}
Pole Hodnoty Popis
type full, delta Úplný CRL nebo delta CRL

SCEP endpoint

GET /api/v1/scep/:ca_id HTTP/1.1

SCEP operace odpovídají RFC 8894. Podporuje GetCACaps, GetCACert, PKIOperation.


Požadovaná oprávnění

Operace Požadované oprávnění
Odeslat CSR certificate:request
Zobrazit certifikáty certificate:read
Schválit/zamítnout CSR certificate:approve
Odvolat certifikát certificate:revoke
Importovat certifikát certificate:import
Exportovat certifikát certificate:read
Archivovat / Obnovit certificate:archive
Trvalé smazání certificate:permanent_delete
Spravovat konfiguraci rotace rotation:write
Spustit rotaci rotation:execute
Spustit obnovení certificate:write
Spravovat CRL ca:admin

Archiv certifikátů a životní cyklus

Archivovat certifikát

POST /api/v1/certificates/cert_def456/archive HTTP/1.1
Authorization: Bearer <token>

Přesune certifikát do archivu.

Obnovit certifikát z archivu

POST /api/v1/certificates/cert_def456/restore HTTP/1.1
Authorization: Bearer <token>

Trvalé smazání

DELETE /api/v1/certificates/cert_def456/permanent HTTP/1.1
Authorization: Bearer <token>

Nevratné

Trvalé smazání odstraní certifikát a veškerá přidružená data.


Rotace certifikátů

Automatizace rotace certifikátů do externích cílů (správci tajemství, load balancery, cloudové služby).

Získat konfiguraci rotace

GET /api/v1/certificates/cert_def456/rotation/config HTTP/1.1
Authorization: Bearer <token>

Aktualizovat konfiguraci rotace

PUT /api/v1/certificates/cert_def456/rotation/config HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json

Spustit rotaci

POST /api/v1/certificates/cert_def456/rotation/trigger HTTP/1.1
Authorization: Bearer <token>

Historie rotace

GET /api/v1/certificates/cert_def456/rotation/history HTTP/1.1
Authorization: Bearer <token>

Správa cílů rotace

Metoda Endpoint Popis
POST /api/v1/certificates/:id/targets Vytvořit cíl rotace
GET /api/v1/certificates/:id/targets Vypsat cíle rotace
GET /api/v1/certificates/:id/targets/:targetId Detail cíle
PUT /api/v1/certificates/:id/targets/:targetId Aktualizovat cíl
DELETE /api/v1/certificates/:id/targets/:targetId Smazat cíl
POST /api/v1/certificates/:id/targets/:targetId/sync Ruční synchronizace cíle

Obnovení certifikátu (Renewal)

Spustit obnovení

POST /api/v1/certificates/cert_def456/renew HTTP/1.1
Authorization: Bearer <token>

Historie obnovení

GET /api/v1/certificates/cert_def456/renewal-history HTTP/1.1
Authorization: Bearer <token>

Fronta obnovení

Metoda Endpoint Popis
GET /api/v1/renewal-queue Seznam certifikátů čekajících na obnovení
POST /api/v1/renewal-queue/:id/approve Schválit obnovení
POST /api/v1/renewal-queue/:id/cancel Zrušit obnovení

Náhled importu

Náhled certifikátů před importem:

POST /api/v1/certificates/import/preview HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json

Vrátí parsované detaily certifikátu bez importu.

Import souboru

POST /api/v1/certificates/import/file HTTP/1.1
Authorization: Bearer <token>
Content-Type: multipart/form-data

Přijímá soubory certifikátů (PEM, DER, PFX/PKCS#12) přes multipart upload.

Související