Dans ce post, qui fait partie de notre série « comment gérer les certificats SSL sur les systèmes Windows et Linux », nous allons montrer comment convertir un certificat SSL dans les formats les plus courants définis sur les normes X.509 : le format PEM et le format PKCS#12, également connu sous le nom de PFX. Le processus de conversion sera accompli par l’utilisation d’OpenSSL, un outil gratuit disponible pour les plateformes Linux et Windows.
Avant d’entrer dans les commandes de la console d’OpenSSL, nous vous recommandons de jeter un coup d’œil à notre aperçu de X.509 standard et des formats de fichiers de certificats SSL les plus populaires – CER, CRT, PEM, DER, P7B, PFX, P12 et ainsi de suite.
Installation d’OpenSSL
La première chose à faire est de s’assurer que votre système a OpenSSL installé : c’est un outil qui fournit une implémentation open source des protocoles SSL et TLS et qui peut être utilisé pour convertir les fichiers de certificats dans les formats les plus populaires basés sur X.509 v3 les plus populaires.
OpenSSL sur Linux
Si vous utilisez Linux, vous pouvez installer OpenSSL avec la commande console YUM suivante :
1
|
.>
yum install openssl |
Si votre distribution est basée sur APT au lieu de YUM, vous pouvez utiliser la commande suivante à la place :
1
|
> apt-get install openssl
|
OpenSSL sur Windows
Si vous utilisez Windows, vous pouvez installer une des nombreuses implémentations open-source d’OpenSSL : celle que nous pouvons recommander est Win32 OpenSSL par Shining Light Production, disponible en version légère ou complète, toutes deux compilées en mode x86 (32 bits) et x64 (64 bits) . Vous pouvez installer n’importe laquelle de ces versions, tant que votre système les supporte.
OpenSSL est fondamentalement une application console, ce qui signifie que nous l’utiliserons à partir de la ligne de commande : une fois le processus d’installation terminé, il est important de vérifier que le dossier d’installation (C :\Program Files\OpenSSL-Win64\bin pour la version 64 bits) a été ajouté au PATH du système (Panneau de configuration > Système> Avancé > Variables d’environnement) : si ce n’est pas le cas, nous vous recommandons vivement de l’ajouter manuellement, afin d’éviter de taper le chemin complet de l’exécutable à chaque fois que vous devrez lancer l’outil.
Une fois OpenSSL installé, nous pourrons l’utiliser pour convertir nos certificats SSL dans différents formats.
De PEM (pem, cer, crt) à PKCS#12 (p12, pfx)
C’est la commande de la console que nous pouvons utiliser pour convertir un fichier de certificat PEM (extensions .pem, .cer ou .crt), ainsi que sa clé privée (.key), en un seul fichier PKCS#12 (extensions .p12 et .pfx extensions) :
1
|
> openssl pkcs12 -in.export -dans le certificat.crt -inkey privatekey.key -out certificate.pfx
|
Si vous avez également un fichier de certificats intermédiaires (par exemple, CAcert.crt) , vous pouvez l’ajouter au « bundle » en utilisant le paramètre de commande -certfile de la manière suivante :
1
|
> openssl pkcs12 -in.export -in certificate.crt -inkey privatekey.key -out certificate.pfx -certfile CAcert.cr
|
Du PKCS#12 au PEM
Si vous devez « extraire » un certificat PEM (.pem, .cer ou .crt) et/ou sa clé privée (.key)à partir d’un seul fichier PKCS#12 (.p12 ou .pfx), vous devez émettre deux commandes.
La première consiste à extraire le certificat :
1
|
> openssl pkcs12 -in certificate.pfx -nokey -out certificate.crt
|
Et une deuxième serait de récupérer la clé privée :
1
|
> openssl pkcs12 -in certificate.pfx -out privatekey.key
|
IMPORTANT : la clé privée obtenue avec la commande ci-dessus sera au format chiffré : pour la convertir au format RSA, vous devrez entrer une troisième commande :
1
|
> openssl rsa -in privatekey.key -out privatekey_rsa.key
|
Il va sans dire que, puisque PKCS#12 est un format protégé par un mot de passe, pour exécuter toutes les commandes ci-dessus, vous serez invité à saisir le mot de passe qui a été utilisé lors de la création du fichier .pfx.
De DER (.der, cer) vers PEM
1
|
> openssl x509 -in certificate.inform der -in certificat.cer -out certificate.pem
|
De PEM à DER
1
|
> openssl x509 -outform der -in certificat.pem -out certificate.der
|
De PEM à PKCS#7 (.p7b, .p7c)
1
|
> openssl crl2pkcs7 -nocrl -certfile certificat.pem -out certificate.p7b -certfile CAcert.cer
|
Du PKCS#7 au PEM
1
|
> openssl pkcs7 -print_certs -dans le certificat.p7b -out certificat.pem
|
From PKCS#7 to PFX
1
2
|
> openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
> openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
|
Convertisseurs SSL en ligne
Si vous ne pouvez pas (ou ne voulez pas) installer OpenSSL, vous pouvez convertir vos certificats SSL en utilisant l’un de ces outils en ligne basés sur le web :
- Outil de conversion de certificats SSL par SSLShopper.com
- Convertisseur SSL par NameCheap
Les deux fonctionnent très bien et peuvent convertir la plupart, sinon la totalité, du format détaillé ci-dessus : en même temps, vous devez sérieusement penser aux implications de sécurité qui viennent avec le téléchargement de vos certificats SSL (et éventuellement de leurs clés privées) vers un service tiers. Aussi fiables et sécurisés que soient ces deux sites à ce jour, nous ne recommandons toujours pas une telle démarche.
Conclusions
C’est tout, du moins pour le moment : nous espérons que ces commandes seront utiles aux développeurs et aux administrateurs système qui ont besoin de convertir des certificats SSL dans les différents formats requis par leurs applications.
À la prochaine !