Protection des clés de CA
Générez les clés de signature des CA dans un HSM, un KMS cloud ou un cluster MPC, et signez-y chaque certificat, CRL et réponse OCSP.
Vue d'ensemble
Une autorité de certification créée avec un vault conserve sa clé privée dans ce vault. La clé y est générée, seule la clé publique est relue, et rien n'est exporté ni stocké avec la CA. Cela s'applique aux CA classiques RSA et ECDSA comme aux CA post-quantiques et hybrides.
Une CA créée sans vault fonctionne toujours : sa clé est générée en logiciel et stockée par la plateforme avec la CA. La page de détail de la CA indique le cas applicable (voir Garde de la clé), et les CA existantes peuvent être déplacées dans un vault (voir Migrer une CA existante).
Fonctionnement des clés de CA résidentes dans un vault
Génération de la clé dans le vault
Lorsque vous créez une CA racine ou intermédiaire en sélectionnant un vault, la paire de clés est générée dans ce vault. Cockpit ne relit que la clé publique.
Signature de contrôle
Avant de construire le certificat de la CA, Cockpit demande une signature de test au vault et la vérifie. Si la clé ne signe pas correctement, la création de la CA échoue et la clé du vault est supprimée.
Chaque signature est faite dans le vault
Le certificat de la CA, les certificats émis, les CRL, les réponses OCSP et les réponses des protocoles d'enrôlement (ACME, EST, CMP, enrôlement automatique Windows, cert-manager) sont tous signés par le vault.
Chaque signature est vérifiée avant usage
Chaque signature renvoyée par le vault est vérifiée avec la clé publique de la CA avant d'être placée dans un certificat, une CRL ou une réponse OCSP. Un back-end qui signe avec une mauvaise clé, un mauvais padding ou un mauvais hachage échoue de façon sûre au lieu de produire un certificat invalide.
Chaque signature coûte un aller-retour vers le vault. Pour une émission à fort volume, placez le vault près du déploiement Cockpit.
Garde de la clé
La page de détail de la CA affiche un badge de garde de la clé (renvoyé aussi par l'API sous key_custody) :
| Garde | Signification |
|---|---|
vault | La clé n'existe que dans le vault, HSM, KMS cloud ou cluster MPC associé |
vault_pqc | CA post-quantique ou hybride, signée dans le vault |
legacy_exportable | Une copie logicielle de la clé est encore stockée avec la CA et une clé de vault est associée (CA créée avant la prise en charge des clés classiques résidentes, ou CA en cours de migration) |
local_database | La clé est stockée par la plateforme avec la CA ; aucun vault n'est associé |
none | Aucune clé de signature utilisable |
Back-ends pris en charge
L'assistant de création de CA ne propose que les algorithmes que le vault choisi peut conserver et utiliser pour signer.
| Back-end du vault | Clés de CA classiques |
|---|---|
| Software Vault | RSA-2048, RSA-4096, EC P-256, EC P-384 |
| HSM Securosys Primus | RSA, EC |
| Azure Key Vault / Managed HSM | RSA, EC |
| HSM réseau via le proxy REST PKCS#11 DuoKey (voir Vaults) | RSA, EC |
| Agent HSM sur site, DuoKey Software HSM | RSA, EC (version actuelle de l'agent requise) |
| AWS KMS | EC uniquement |
| Google Cloud KMS | EC uniquement |
| HashiCorp Vault / OpenBao Transit | EC uniquement |
| Sepior (Blockdaemon) MPC | EC P-256 uniquement |
| Alibaba Cloud KMS | EC P-256 uniquement |
Les CA post-quantiques et hybrides ne changent pas : elles nécessitent un vault qui génère et signe des clés post-quantiques (Software Vault ou Securosys), voir PKI post-quantique.
Le comportement de signature varie selon le modèle de HSM, la version de firmware et la configuration du KMS cloud. Avant de déplacer une CA de production, créez une CA de test sur le même vault, émettez, révoquez et publiez une CRL avec elle. Contactez DuoKey pour confirmer le statut de qualification de votre HSM ou KMS.
Clés de CA protégées par MPC
Une CA peut être associée à un vault MPC. Ses certificats, CRL et réponses OCSP sont alors signés par le cluster MPC : la clé privée n'est jamais reconstituée en un seul endroit, ni dans Cockpit ni dans un nœud MPC.
| Back-end MPC | Algorithmes de clé de CA | Remarques |
|---|---|---|
| Sepior (Blockdaemon) MPC, via l'API DuoKey KMS | ECDSA P-256 uniquement | Les clés de CA RSA et P-384 sont refusées à la création, car le service de signature MPC ne signe qu'en ECDSA P-256 / SHA-256 |
| DuoKey Software HSM / Managed MPC (PKCS#11 via l'agent HSM) | RSA, EC | Nécessite la version actuelle de l'agent HSM, qui renvoie la clé publique de la clé MPC |
Les clés de CA protégées par MPC sont disponibles en préversion. Validez la création de la CA, l'émission et la publication de CRL sur votre vault MPC avant de l'utiliser pour une CA de production. Si le service MPC ne renvoie pas de clé publique exploitable, la création de la CA échoue avec une erreur explicite ; elle ne produit jamais une CA avec une mauvaise clé.
Exiger des clés de CA résidentes dans un vault
Les déploiements sur site peuvent refuser toute nouvelle CA classique sans vault avec le paramètre de déploiement DKE_PKI_REQUIRE_VAULT_CA_KEYS=true. Aucune nouvelle clé de CA logicielle ne peut alors être créée. Ce paramètre est désactivé par défaut. Sur les tenants hébergés par DuoKey, demandez au support DuoKey de l'appliquer.
Migrer une CA existante
Les CA dont la garde est local_database ou legacy_exportable peuvent être déplacées dans un vault sans changer le certificat de la CA. Les trois opérations nécessitent la permission Operations.Pki.CAs.Update.
Importer la clé existante dans le vault (optionnel)
POST /api/pki/cas/{id}/key/import-to-vault avec vault_id importe la clé stockée via l'interface d'import de clé (BYOK) du vault et l'associe. Cette opération n'est aujourd'hui disponible que pour Azure Key Vault / Managed HSM ; les autres vaults répondent 400. Pour un HSM, importez la clé avec l'outillage du fabricant puis passez à l'étape 2.
Associer la CA à la clé du vault
POST /api/pki/cas/{id}/key/bind-vault-key avec vault_id et key_external_id. L'association est refusée si la clé publique de la clé du vault n'est pas identique à celle du certificat de la CA ou si la signature de contrôle ne se vérifie pas. La copie stockée est conservée à ce stade (garde legacy_exportable).
Purger la clé stockée
POST /api/pki/cas/{id}/key/purge-stored-key efface la copie logicielle. L'opération est refusée si la CA n'est pas associée à une clé de vault qui passe les mêmes contrôles. Ensuite, la CA ne signe plus que dans le vault (garde vault).
Si la clé existante a déjà été détenue en logiciel et que vous voulez une clé qui n'a jamais existé qu'en matériel, créez une nouvelle CA avec une clé résidente dans un vault et émettez depuis celle-ci. L'ancienne CA continue de servir sa CRL et son OCSP pour les certificats qu'elle a émis jusqu'à leur expiration.
Limites
- SCEP ne peut pas être servi depuis une CA dont la clé réside dans un vault. SCEP déchiffre l'enveloppe d'enrôlement avec la clé de la CA (déchiffrement RSA PKCS#1 v1.5), ce que les back-ends de vault n'offrent pas pour les clés de CA. Un profil SCEP nécessite donc une CA RSA dont la clé est détenue en logiciel par la plateforme ; l'association d'un profil SCEP à une CA résidente dans un vault est refusée.
- Les CA secp256k1 ne peuvent pas être résidentes dans un vault.
- Software Vault : une clé de CA générée dans le Software Vault est stockée comme une clé scellée et non exportable nommée
CA signing key - <CN>. Supprimer cette clé empêche la CA de signer. - La création d'une CA ajoute une signature de contrôle, et chaque signature un aller-retour vers le vault.
API
| Méthode et chemin | Rôle | Permission |
|---|---|---|
GET /api/pki/cas/{id} | Détails de la CA, dont key_custody | Operations.Pki.CAs.Read |
GET /api/vaults/{id}/key-types | Algorithmes qu'un vault peut conserver comme clé de CA (pki_signing_algorithms[].ca_key_in_vault) | Operations.Vaults.Read |
POST /api/pki/cas/{id}/key/import-to-vault | Importer la clé stockée dans le vault et l'associer | Operations.Pki.CAs.Update |
POST /api/pki/cas/{id}/key/bind-vault-key | Associer la CA à une clé de vault existante | Operations.Pki.CAs.Update |
POST /api/pki/cas/{id}/key/purge-stored-key | Effacer la clé logicielle stockée | Operations.Pki.CAs.Update |
Une CA ou un vault d'un autre tenant répond 404.