Export de clés dans des formats standard
La réversibilité par conception : une clé créée exportable peut quitter le Cockpit dans un format qu'importe tout autre KMS, HSM ou bibliothèque cryptographique, sous contrôle de permission, de quorum et d'audit.
Les clés ne sont pas exportables par défaut. Lorsque vous avez besoin d'une porte de sortie - migration vers un autre KMS, copie de séquestre, ou import d'une copie dans un KMS cloud (BYOK) - créez la clé avec l'option Clé exportable. Une telle clé peut ensuite sortir de la plateforme par l'un de quatre canaux standard.
Formats d'export
| Format | Types de clés | Ce que vous obtenez |
|---|---|---|
| PKCS#8 | RSA, EC, ML-DSA, ML-KEM, SLH-DSA (clés privées) | Clé privée chiffrée au format PEM (EncryptedPrivateKeyInfo, RFC 5958). Chiffrement par mot de passe avec PBES2, PBKDF2-HMAC-SHA-256 (600 000 itérations) et AES-256-CBC. Lisible par OpenSSL, Java et la plupart des KMS. |
| PKCS#12 | RSA, EC, ML-DSA, ML-KEM, SLH-DSA (clés privées) | Fichier .p12 protégé par mot de passe (RFC 7292), avec des sacs chiffrés en AES-256 et un MAC d'intégrité HMAC-SHA-256. Si la clé a un certificat, le certificat non révoqué le plus récent et sa chaîne sont inclus ; sinon le fichier contient la clé seule. |
| Encapsulée (RSA-AES) | Tous types, y compris AES et HMAC | La clé chiffrée sous votre clé publique RSA : RSA-OAEP-SHA-256(clé AES-256 à usage unique) suivi de AES-KWP (RFC 5649) de la clé. Les clés symétriques sont encapsulées brutes, les clés privées en PKCS#8 DER. |
| KMIP | Tous types | La clé est publiée sur l'un de vos endpoints KMIP et un client KMIP la récupère par Get : clés privées en PKCS#8, clés symétriques en Raw, éventuellement encapsulées selon une Key Wrapping Specification KMIP. |
Les clés symétriques (AES, HMAC) ne sortent qu'encapsulées ou via KMIP : PKCS#8 et PKCS#12 sont des conteneurs de clés privées.
Import BYOK dans un autre KMS ou HSM
Le format encapsulé est le format standard d'import par encapsulation RSA-AES ; le fichier s'importe tel quel :
| Cible | Mécanisme d'import |
|---|---|
| Tout HSM PKCS#11 | CKM_RSA_AES_KEY_WRAP |
| AWS KMS (import de matériel de clé) | RSA_AES_KEY_WRAP_SHA_256 |
| Google Cloud KMS (tâche d'import) | RSA_OAEP_*_SHA256_AES_256 |
Collez la clé publique d'encapsulation que le KMS cible vous fournit pour l'import (RSA, 2048 bits ou plus, en PEM SPKI ou PKCS#1), téléchargez le fichier encapsulé et importez-le côté cible.
Les clés privées ML-DSA, ML-KEM et SLH-DSA utilisent les encodages IETF LAMPS, tels qu'OpenSSL 3.5 les écrit : ML-DSA et ML-KEM sous la forme expandedKey, SLH-DSA comme clé privée brute. OpenSSL 3.5 lit chacun des fichiers exportés.
Quels coffres peuvent exporter
La possibilité d'export dépend de l'endroit où se trouve le matériel de la clé. Le Cockpit ne propose que les formats autorisés par le coffre de la clé.
| Coffre | Formats | Fonctionnement |
|---|---|---|
| Software Vault | PKCS#8, PKCS#12, encapsulé, KMIP | Le Cockpit détient le matériel et construit le fichier. |
| HSM Securosys Primus | Encapsulé uniquement | L'encapsulation a lieu dans le HSM : votre clé publique RSA est importée, une clé AES-256 à usage unique est générée, la clé est encapsulée sous celle-ci et la clé à usage unique sous votre clé RSA ; les deux objets temporaires sont ensuite supprimés. La clé n'existe jamais en clair hors du HSM, pas même vers le Cockpit, c'est pourquoi PKCS#8, PKCS#12 et KMIP ne sont pas proposés. Clés RSA, EC, AES et HMAC ; les clés post-quantiques ne peuvent pas être exportées du HSM. |
| KMS cloud (AWS KMS, Google Cloud KMS, Azure Key Vault, Alibaba KMS) | Aucun | Ces fournisseurs ne laissent pas sortir le matériel de clé. Azure Secure Key Release ne libère une clé que vers un environnement confidentiel attesté, pas vers une cible arbitraire. |
| DuoKey MPC KMS | Aucun | Une clé MPC n'existe jamais d'un seul tenant : il n'y a rien à exporter. |
| HSM Agent (PKCS#11 sur site) | Aucun | L'agent crée chaque clé non extractible par conception. |
Si une clé doit être utilisable dans un KMS cloud tout en restant réversible, créez-la exportable dans le Software Vault ou le HSM Securosys, puis importez-en une copie encapsulée dans le KMS cloud (BYOK).
La création d'une clé exportable dans un coffre qui ne peut pas l'exporter est refusée, plutôt que d'enregistrer une promesse que le coffre ne peut pas tenir.
Conditions
Un export n'a lieu que si toutes les conditions suivantes sont réunies :
| Condition | Détails |
|---|---|
| Permission | L'utilisateur détient la permission Keys > Export Key Material (Operations.Keys.Export). Elle n'est accordée par défaut à aucun rôle sauf Admin. Sans elle, le bouton Exporter la clé est masqué et l'API refuse l'appel. |
| Clé créée exportable | L'option Clé exportable était activée à la création de la clé (désactivée par défaut). L'attribut est à sens unique, comme CKA_EXTRACTABLE en PKCS#11 : il peut être retiré ensuite mais jamais accordé, si bien qu'une clé créée non exportable ne peut jamais être ouverte, même par un utilisateur autorisé à modifier les clés. Sur le HSM Securosys, l'option positionne l'attribut extractable du HSM lui-même à la génération. |
| Coffre compatible | La clé se trouve dans un coffre capable de l'exporter, dans un format autorisé par ce coffre (voir le tableau ci-dessus). |
| Protection valide | Un mot de passe d'au moins 12 caractères (PKCS#8, PKCS#12), ou une clé RSA d'encapsulation de 2048 bits ou plus (encapsulé). |
| Limite de débit | Au plus 10 exports par clé et par heure. |
| Approbation par quorum | Lorsqu'une politique de quorum liée à la clé ou à son coffre contrôle l'export (l'export fait partie de l'ensemble contrôlé par défaut, avec la suppression et la rotation), la première demande ouvre une demande d'approbation M-sur-N au lieu d'exporter. Relancez l'export une fois la demande approuvée. |
KMIP ne peut pas transporter d'approbation. Une clé dont l'export est soumis à quorum ne peut donc pas être publiée sur un endpoint KMIP, et un Get KMIP d'une clé déjà publiée est refusé dès qu'une telle politique s'applique.
Exporter une clé depuis le Cockpit
Ouvrir la clé
Allez dans Clés et ouvrez la clé. Le bouton Exporter la clé n'apparaît que si vous détenez la permission d'export, que la clé est exportable et que son coffre autorise l'extraction.
Choisir le format
Sélectionnez PKCS#8, PKCS#12, Encapsulée (RSA-AES) ou KMIP. Les formats que la clé ou son coffre ne peuvent pas utiliser sont désactivés.
Protéger l'export
Saisissez deux fois le mot de passe d'export (PKCS#8, PKCS#12), collez la clé publique RSA de la cible (encapsulé) ou choisissez un endpoint KMIP (KMIP).
Télécharger ou publier
Cliquez sur Télécharger (ou Publier pour KMIP). Le fichier est généré à la demande et n'est jamais conservé sur le serveur. Si un quorum s'applique, le Cockpit indique la demande d'approbation ouverte.
Exporter via l'API
Mots de passe et clés d'encapsulation passent dans le corps de la requête, jamais dans l'URL.
# PKCS#8
curl -X POST "$COCKPIT/api/keys/$KEY_ID/export" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"format":"pkcs8","password":"<au moins 12 caractères>"}' -o key.p8.pem
openssl pkey -in key.p8.pem -noout -text
# PKCS#12
curl -X POST "$COCKPIT/api/keys/$KEY_ID/export" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"format":"pkcs12","password":"<au moins 12 caractères>"}' -o key.p12
# Encapsulée sous la clé d'import fournie par le KMS cible
jq -n --rawfile pem wrapping-key.pem '{format:"wrapped", wrapping_public_key_pem:$pem}' \
| curl -X POST "$COCKPIT/api/keys/$KEY_ID/export" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d @- -o key.rsa-aes-wrapped.bin
GET /api/keys/{id} indique à l'avance si une clé peut être exportée et dans quels formats (is_exportable, export_supported, export_formats). Lorsqu'un quorum s'applique, l'appel d'export répond 202 avec un corps JSON portant le request_id de la demande d'approbation au lieu d'un fichier.
Via KMIP
# Publier la clé sur un endpoint KMIP de votre tenant
curl -X POST "$COCKPIT/api/keys/$KEY_ID/kmip-publications" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"endpoint_id":"<id de l endpoint KMIP>"}'
# -> {"unique_identifier":"kmip-...","endpoint_slug":"..."}
# Lister, puis retirer une publication
curl "$COCKPIT/api/keys/$KEY_ID/kmip-publications" -H "Authorization: Bearer $TOKEN"
curl -X DELETE "$COCKPIT/api/keys/$KEY_ID/kmip-publications/<unique identifier>" -H "Authorization: Bearer $TOKEN"
Le client KMIP envoie ensuite Get avec l'Unique Identifier renvoyé. Pour publier des clés asymétriques, ajoutez PrivateKey aux types d'objets autorisés de l'endpoint.
L'objet publié ne contient aucun matériel de clé : chaque Get revérifie la clé, si bien que retirer l'attribut exportable, lier une politique de quorum sur l'export ou supprimer la clé ferme immédiatement le canal KMIP. L'objet publié ne peut qu'être exporté ; il ne sert pas au chiffrement côté serveur, et un Destroy KMIP ne retire que la publication, jamais la clé elle-même.
Avec la CLI DuoKey
read -rs DKE_EXPORT_PASSWORD && export DKE_EXPORT_PASSWORD # saisi sans écho
dke keys export $KEY_ID --format pkcs8 --out key.p8.pem
dke keys export $KEY_ID --format pkcs12 --out key.p12
dke keys export $KEY_ID --format wrapped --wrapping-key import-key.pem --out key.bin
La CLI lit le mot de passe dans une variable d'environnement (--password-env, par défaut DKE_EXPORT_PASSWORD) ou sur l'entrée standard, jamais dans un argument de ligne de commande, et n'écrase pas un fichier existant sans --force.
Audit
Chaque export est enregistré dans le journal d'activité de la clé, avec l'utilisateur et le format, quel que soit le réglage d'audit propre à la clé. Un Get KMIP qui sert une clé publiée est enregistré de la même façon et nomme l'endpoint ; chaque publication est également enregistrée. Le journal d'activité les regroupe sous l'action Export. Ni le matériel de clé ni le mot de passe ne sont jamais écrits dans un journal ou dans la piste d'audit.
Clés Double Key Encryption
Une clé DKE est une clé Cockpit ordinaire et suit les mêmes règles : elle n'est exportable que si elle a été créée exportable dans le Software Vault ou le HSM Securosys. Une clé DKE conservée dans un KMS cloud, dans le DuoKey MPC KMS ou derrière le HSM Agent ne peut pas être exportée. Décidez-le à la création : l'attribut exportable ne peut pas être ajouté après coup.
Quiconque détient une clé privée exportée et son mot de passe peut déchiffrer tout ce que cette clé protège, hors du Cockpit et de ses politiques d'accès. Conservez fichiers exportés et mots de passe séparément, et seulement le temps nécessaire.