Sommaire
PKCS#12 est généralement utilisé pour stocker la clé privée, le certificat de clé publique correspondant et les certificats de la chaîne de certification, en les protégeant par un mot de passe.
Dans le cas d'un certificat émis par la PKI de l'AUF, un fichier PKCS (extension .p12) contient :
- la clé privée
- le certificat associé (clé publique signée par l'autorité régionale)
- le certificat de la clé régionale (signé par l'autorité racine, étape 1 de la chaîne de certification)
- le certificat de l'autorité racine (auto-signé, étape 0 de la chaîne de certification)
Obtenir un fichier PKCS#12 depuis la PKI de l'AUF
Lorsque vous allez chercher un certificat sur la PKI de l'AUF (http://igc.auf.org), vous cliquez sur "Obtenir un certificat". Vous devez alors donner le nom d'utilisateur et le mot de passe de votre entité.
Si vous arrivez sur un formulaire qui vous propose le choix Taille de la clé en nombre (1024, 2048, 4096, etc) alors c'est que vous allez recevoir un fichier PKCS#12. C'est le créateur de l'entité, donc le responsable de votre autorité de certification régionale, qui a choisi votre mot de récupération de certificat. En général, PKCS#12 est choisi pour les certificats serveurs (SSL/TLS et OpenVPN).
Choisissez la taille de la clé, puis cliquez sur OK.
Vous recevrez un fichier PKCS#12 protégé avec le mot de passe de votre entité (celui que vous avez saisi pour obtenir le certificat).
Extraire un fichier PKCS#12 depuis Firefox
Important : pour qu'un fichier PKCS#12 extrait de Firefox comprenne bien tous les certificats de la chaîne de certificat, il faut que Firefox lui-même connaisse la chaîne de certification. Pour cela, allez dans « Édition / Préférences / Avancé / Chiffrement / Afficher les certificats / Autorités » et vérifiez que vous disposez bien de AC-RACINE et AC-REGION au niveau du groupe AUF. Si elles n'y sont pas, allez sur http://igc.auf.org/retrieve/ca.jsp et ajoutez-les en cliquant sur "import Firefox" au niveau de l'AC Racine et de l'AC de votre région.
Lorsqu'on dispose d'un certificat utilisateur enregistré dans la base des certificats, voici comment l'extraire au format PKCS#12 :
- Aller sur Firefox, dans le menu Édition / Préférences, sous-menu "Avancé", onglet "Chiffrement". Cliquer alors sur "Afficher les certificats". Ouf !
- Choisir l'onglet "Vos certificats", sélectionner le certificat à exporter, puis cliquer sur "Sauvegarder".
- Choisir un nom de fichier. Lui donner l'extension ".p12" afin de le retrouver facilement plus tard.
Si vous disposez d'un mot de passe principal dans Firefox (ce qui est conseillé), Firefox vous le demandera à ce moment afin de pouvoir lire le certificat.
- Firefox demande ensuite un mot de passe pour protéger le fichier ".p12", c'est-à-dire pour crypter les données qu'il contient.
Cliquer sur OK : le fichier certificat.p12 est enregistré.
Décomposer un PKCS#12 en fichiers PEM
Certains logiciels ne savent pas gérer directement le format PKCS#12. La plupart du temps, ils nécessitent des fichiers séparés au format PEM. Un fichier contiendra la clé, l'autre le certificat, et un troisième les certificats des autorités de certification.
Voici la procédure pour extraire les données au format PEM depuis un fichier PKCS#12 :
- Extraction de la clé privée (key.pem)
$ openssl pkcs12 -in test.p12 -nocerts -out client-key.pem
OpenSSL demande alors le mot de passe qui protège le fichiers PKCS#12, puis le mot de passe pour crypter la clé privée key.pem.
Note : si le certificat est destiné à un serveur SSL/TLS (web, smtp, pop, imap, openvpn), il faut extraire une clé non cryptée. Pour cela, on ajoute l'option -nodes :
$ openssl pkcs12 -in test.p12 -nocerts -nodes -out client-key.pem
- Extraction du certificat (cert.pem)
$ openssl pkcs12 -in test.p12 -clcerts -nokeys -out client-cert.pem
- Extraction de la chaîne de certificat (CAs-cert.pem)
- Il s'agit de l'ensemble des certificats des autorités de certifications. Pour un certificat AUF, c'est l'AC régionale et l'AC racine. Les certificats sont mis les uns à la suite des autres dans le fichier de sortie
$ openssl pkcs12 -in test.p12 -cacerts -nokeys -out CAs-cert.pem