API PKI
L'API de gestion authentifiée pour la PKI du Cockpit — autorités de certification, certificats, émetteurs, révocation, déploiement, découverte et conformité — ainsi que les endpoints de protocole public que les clients standards appellent pour s'enrôler et vérifier le statut d'un certificat.
L'API PKI comporte deux familles d'endpoints. L'API de gestion (/api/pki/…) est authentifiée par une session utilisateur Cockpit, délimitée à votre tenant, et soumise aux permissions Operations.Pki.* ; elle crée et exploite les CA, certificats, émetteurs, cibles de déploiement et scanners. Les endpoints de protocole public (ACME, EST, SCEP, CMP, OCSP et téléchargement de CRL) sont servis sur leurs propres chemins standards et appelés directement par les clients ACME/EST/SCEP/CMP, les répondeurs OCSP et les parties utilisatrices — ils s'authentifient avec leurs propres mécanismes de protocole, et non avec un jeton Cockpit.
| Famille | Chemin de base | Authentification | Objet |
|---|---|---|---|
| API de gestion | /api/pki/… | Session utilisateur Cockpit (JWT), permissions Operations.Pki.* | Créer et exploiter les CA, certificats, émetteurs, déploiement et découverte |
| Endpoints de protocole public | chemins racine tels que /ocsp/…, /scep/…, /cmp/…, .well-known/est/…, et l'annuaire ACME | Chaque standard de protocole (clés de compte ACME, transport EST/SCEP/CMP, HTTP simple pour OCSP/CRL) | Protocoles d'enrôlement et de statut de certificat que les clients parlent directement |
Les lignes dont l'objet est marqué (public) sont accessibles sans session Cockpit — ce sont les surfaces de protocole standard. Toutes les autres lignes sont des routes de gestion et nécessitent la permission Operations.Pki.* correspondante.
Autorités de certification
CA racines, intermédiaires et externes, avec un cycle de vie complet et audité — suspension, réactivation, révocation (simple ou en cascade), archivage — plus la chaîne, l'aperçu d'impact et la CRL. Les actions correspondent aux permissions Operations.Pki.CAs.*.
| Méthode + Chemin | Objet |
|---|---|
GET · POST /api/pki/cas | Lister les CA · créer une CA racine |
GET · PUT /api/pki/cas/{id} | Obtenir · mettre à jour une CA |
POST /api/pki/cas/{id}/intermediate | Créer une CA intermédiaire |
GET /api/pki/cas/{id}/chain | Obtenir la chaîne de certificats de la CA |
GET /api/pki/cas/{id}/lifecycle/impact | Prévisualiser le rayon d'impact du cycle de vie |
POST /api/pki/cas/{id}/lifecycle/suspend · /reactivate | Suspendre · réactiver |
POST /api/pki/cas/{id}/revoke | Révoquer (simple) |
POST /api/pki/cas/{id}/lifecycle/revoke | Révocation en cascade (CA + sous-CA + certificats émis) |
POST /api/pki/cas/{id}/lifecycle/archive · /unarchive | Archiver · désarchiver |
GET · POST /api/pki/cas/{id}/crl | Obtenir · générer la CRL de la CA |
Appelez d'abord la route lifecycle/impact — elle renvoie un rapport en lecture seule indiquant précisément quelles sous-CA et quels certificats une révocation en cascade affecterait.
Certificats & demandes
Les certificats sont émis directement sous une CA, ou via le flux de demande (soumission, puis approbation / rejet). Les deux sont soumis aux permissions d'émission de certificat PKI.
| Méthode + Chemin | Objet |
|---|---|
POST /api/pki/cas/{id}/certificates | Émettre un certificat sous une CA |
/api/pki/requests | Flux de demande de certificat — soumission, puis approbation / rejet |
L'émission sous une CA correspond à POST /api/pki/cas/{id}/certificates ; le flux de demande utilise /api/pki/requests avec des actions d'approbation / rejet. Voir Créer un certificat.
Émetteurs
Un émetteur est un service amont configuré (par exemple un compte ACME ou une CA externe) que la plateforme pilote pour obtenir des certificats. Les émetteurs peuvent être testés, activés/désactivés et utilisés pour exécuter le cycle de vie du certificat.
| Méthode + Chemin | Objet |
|---|---|
GET · POST /api/pki/issuers | Lister · créer un émetteur |
GET · PUT · DELETE /api/pki/issuers/{id} | Gérer un émetteur |
POST /api/pki/issuers/{id}/test | Tester la connexion |
PUT /api/pki/issuers/{id}/status | Mettre à jour le statut |
POST /api/pki/issuers/{id}/register | Enregistrer un compte ACME |
POST /api/pki/issuers/{id}/issue · /renew · /revoke | Cycle de vie du certificat via l'émetteur |
Protocoles d'enrôlement
Chaque protocole dispose d'une surface d'administration sur l'API de gestion (configuration, profils, alias, statut) et d'une surface de protocole public sur des chemins standards que les clients parlent directement. Les lignes publiques sont marquées (public).
ACME (RFC 8555)
Un serveur ACME complet par CA : directory, new-nonce, new-account, new-order, authorization, challenge, finalize, téléchargement de certificat et revoke-cert. Pointez n'importe quel client ACME (ou l'émetteur ACME de cert-manager) vers l'URL de l'annuaire ACME de la CA.
| Méthode + Chemin | Objet |
|---|---|
GET /api/pki/acme/{ca_id}/config | Configuration d'administration ACME |
…/acme/{ca_id}/directory | Annuaire ACME (public) |
…/new-nonce · /new-acct · /new-order | Flux de compte et de commande (public) |
…/authz/{id} · /challenge/{id} · /order/{id}/finalize | Autorisation, challenge, finalisation (public) |
…/cert/{id} · /revoke-cert | Téléchargement et révocation (public) |
EST (RFC 7030)
Enrollment over Secure Transport : cacerts, simpleenroll, simplereenroll, serverkeygen et csrattrs, servis sous le chemin standard .well-known/est/.
| Méthode + Chemin | Objet |
|---|---|
GET /api/pki/est/{ca_id}/cacerts | Certificats de CA |
.well-known/est/{slug}/* | simpleenroll / simplereenroll / serverkeygen / csrattrs (public) |
GET · PUT /api/pki/est/{ca_id}/config · /enrollments | Administration EST |
SCEP (RFC 8894)
Simple Certificate Enrollment Protocol avec des profils configurables. L'endpoint public pkiclient.exe sert GET/POST pour les clients SCEP classiques.
| Méthode + Chemin | Objet |
|---|---|
GET · POST /api/pki/scep/profiles · /profiles/{id} | Gérer les profils SCEP |
…/{profile_id}/status | Statut d'enrôlement |
GET · POST /scep/{slug}/pkiclient.exe | Protocole SCEP (public) |
CMP (RFC 4210 / 9483)
Certificate Management Protocol avec des alias nommés, suivi des transactions et métriques par alias. Les clients envoient un POST à l'endpoint de message CMP.
| Méthode + Chemin | Objet |
|---|---|
GET · POST /api/pki/cmp/aliases · /aliases/{id} | Gérer les alias CMP |
…/aliases/{id}/transactions · /transactions/{id} | Historique des transactions |
POST /cmp/{alias} | Protocole CMP (public) |
Kubernetes cert-manager
Enregistrer DuoKey comme émetteur externe pour cert-manager : cert-manager envoie des CSR à l'endpoint de signature et DuoKey renvoie des certificats signés, gardant les clés gérées par Kubernetes enrôlées auprès de votre CA.
| Méthode + Chemin | Objet |
|---|---|
POST · GET /api/pki/certmanager/issuers | Enregistrer / lister les émetteurs externes |
…/issuers/{id}/status | Statut de l'émetteur |
/api/pki/certmanager/sign | Signer une CSR cert-manager |
/api/pki/certmanager/healthz | Vérification de santé |
Serveur KMIP 2.1
DuoKey peut agir comme serveur KMIP, exposant des objets et opérations de clés / certificats aux clients KMIP.
| Méthode + Chemin | Objet |
|---|---|
GET · POST /api/pki/kmip-server/{endpoint_id}/objects | Objets KMIP |
…/operations · /stats · /test | Opérations, statistiques, test de connectivité |
Cycle de vie unifié des endpoints
Tous les endpoints de protocole (EST / SCEP / ACME / CMP / KMIP) partagent un cycle de vie d'endpoint commun — déployer, démarrer, mettre en pause, arrêter — avec santé et métriques, afin de pouvoir les exploiter de façon cohérente.
| Méthode + Chemin | Objet |
|---|---|
GET · POST /api/endpoints · /endpoints/{id} | Gérer les endpoints de protocole |
…/{id}/start · /pause · /stop | Contrôle du cycle de vie |
…/{id}/health · /metrics | Santé et métriques |
Révocation (CRL & OCSP)
Les certificats et les CA sont révoqués avec un motif standard RFC 5280. Une révocation affecte immédiatement les deux canaux de publication : la CRL de la CA et son répondeur OCSP.
CRL — Listes de révocation de certificats
Chaque CA génère une CRL signée au format DER, publiée à l'URL de distribution de CRL portée par les certificats émis. Les CRL peuvent être générées à la demande ou forcées, et inspectées via les informations de CRL. Le téléchargement DER est public.
| Méthode + Chemin | Objet |
|---|---|
GET /api/pki/crls | Lister les CRL |
GET /api/pki/crl/{ca_id}/info | Métadonnées de CRL (numéro, mise à jour actuelle/suivante) |
POST /api/pki/crl/{ca_id}/generate | Forcer la génération de la CRL |
GET /api/pki/crl/{ca_id} | Télécharger la CRL DER (public) |
GET · POST /api/pki/cas/{id}/crl | Obtenir · générer une CRL de CA |
OCSP — Protocole de statut de certificat en ligne
Pour un statut en temps réel sans télécharger une liste complète, chaque CA peut faire fonctionner un répondeur OCSP. Les répondeurs ont leur propre cycle de vie (déployer, démarrer, mettre en pause, arrêter) plus santé et métriques, et utilisent un certificat de signataire OCSP dédié. Le protocole du répondeur et sa vérification de santé sont publics.
| Méthode + Chemin | Objet |
|---|---|
POST · GET /ocsp/{slug} | Protocole du répondeur OCSP (public) |
GET /ocsp/{slug}/health | Santé du répondeur (public) |
GET · POST /api/ocsp/responders · /responders/{id} | Gérer les répondeurs |
…/responders/{id}/start · /pause · /stop | Cycle de vie du répondeur |
…/responders/{id}/health · /metrics | Santé et métriques |
Déploiement
Pousser les certificats émis vers des cibles en production — appliances F5 et Fortinet, cibles Windows orchestrées par agent (Microsoft IIS, Active Directory / LDAPS, Windows CAPI), cibles SSH (Nginx, Java Keystore), et autres cibles web/app génériques (Azure App Service, Entra ID, Apache HTTPD) — avec des tâches de déploiement, un rollback, des profils de connexion réutilisables et une synchronisation ServiceNow CMDB.
| Méthode + Chemin | Objet |
|---|---|
GET · POST · PATCH · DELETE /api/pki/deploy/f5/targets | Gérer les cibles F5 |
POST /api/pki/deploy/f5/deploy · /f5/deploy-cert-only | Déployer vers F5 |
GET · POST · PATCH · DELETE /api/pki/deploy/fortinet/targets | Gérer les cibles Fortinet |
POST /api/pki/deploy/fortinet/deploy · /fortinet/jobs/{id}/rollback | Déployer · rollback Fortinet |
GET · POST · PATCH · DELETE /api/pki/deploy/windows/targets · /targets/{id} | Gérer les cibles orchestrées par agent (windows_iis, active_directory_ldaps, capi) |
POST /api/pki/deploy/windows/deploy | Mettre en file une tâche de déploiement que l'agent lié récupère et exécute |
POST /api/pki/deploy/windows/jobs/{id}/rollback | Mettre en file une tâche de rollback |
GET /api/pki/orchestrator/jobs · POST /jobs/{id}/report | Récupération de tâches par l'agent et rapport de résultat — auth par clé d'agent, pas une route de session Cockpit |
GET · POST · PUT · DELETE /api/pki/deploy/targets | Cibles génériques (Azure App Service, Entra ID, Apache HTTPD, Nginx, Java Keystore) |
POST /api/pki/deploy/targets/{id}/deploy-entra · /deploy-app-service · /deploy-ssh | Déployer vers Entra ID · Azure App Service · une cible SSH (Nginx / Java Keystore) |
POST /api/pki/deploy/targets/{id}/test | Vérifier la connectivité/les identifiants d'une cible avant de déployer |
GET /api/pki/deploy/jobs · /jobs/{id} | Lister / obtenir les tâches de déploiement |
POST /api/pki/deploy/jobs/{id}/rollback | Effectuer un rollback d'une tâche de déploiement |
GET · POST · PUT · DELETE /api/pki/connections · /connections/{id} | Profils de connexion d'identifiants réutilisables |
/api/pki/connectors/servicenow/* | Synchronisation d'inventaire / d'expiration CMDB ServiceNow |
Découverte & conformité
Trouver des certificats sur le réseau avec des scanners et des agents installés, importer les certificats découverts dans l'inventaire, et exécuter des audits SSL/TLS par certificat et une évaluation de conformité par rapport à des référentiels ou aux politiques propres à votre tenant.
| Méthode + Chemin | Objet |
|---|---|
GET · POST /api/pki/scanners · /scanners/{id} | Gérer les scanners (scan / activation / désactivation / tâches) |
GET /api/pki/scanners/certificates · /certificates/{id} | Parcourir les certificats découverts |
POST /api/pki/scanners/certificates/{id}/import | Importer un certificat découvert |
GET · POST /api/pki/scanners/agents · /agents/register | Parc d'agents de scan |
…/agents/{id}/rotate-key · /revoke | Rotation / révocation de clé d'agent |
GET · POST /api/pki/scanner/targets · /results · /summary | Cibles de scan, résultats et résumé |
GET · POST /api/pki/scanner/certs/{id}/ssl-audit | Exécuter / consulter un audit SSL de certificat |
…/ssl-audit/history · /run · /compliance | Historique d'audit, déclenchement, résultat de conformité |
GET · POST /api/pki/scanner/ssl-compliance/frameworks | Référentiels de conformité |
/api/pki/scanner/compliance/* | Politiques de conformité du tenant et évaluation |