Quelqu'un peut-il me dire la bonne manière / commande pour extraire / convertir le certificat .crt
et les .key
fichiers de clé privée à partir d'un .pem
fichier? Je viens de lire qu'ils sont interchangeables, mais pas comment.
Quelqu'un peut-il me dire la bonne manière / commande pour extraire / convertir le certificat .crt
et les .key
fichiers de clé privée à partir d'un .pem
fichier? Je viens de lire qu'ils sont interchangeables, mais pas comment.
Réponses:
J'ai pu convertir pem en crt en utilisant ceci:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
openssl pkey -in mumble.pem -out mumble-key.pem
Si la version OpenSSL est antérieure à 1.0.0, pour extraire la clé en tant que clé RSA:openssl rsa -in mumble.pem -out mumble-key.pem
unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Expecting: ANY PRIVATE KEY
erreur.
Conversion à l'aide d'OpenSSL
Ces commandes vous permettent de convertir des certificats et des clés dans différents formats pour les rendre compatibles avec des types spécifiques de serveurs ou de logiciels.
Conversion d'un fichier DER (.crt .cer .der) en PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
Conversion d'un fichier PEM à DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Convertir un fichier PKCS # 12 (.pfx .p12) contenant une clé privée et des certificats en PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
Convertir un fichier de certificat PEM et une clé privée en PKCS # 12 (.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
Conversion de PEM en CRT (fichier .CRT)
openssl x509 -outform der -in certificate.pem -out certificate.crt
OpenSSL Convert PEM
Convertir PEM à DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Convertir PEM en P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
Convertir PEM en PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL Convert DER
Convertir DER à PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL Convert P7B
Convertir P7B à PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Convertir P7B en PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL Convert PFX
Convertir PFX en PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Générer des clés rsa par OpenSSL
En utilisant OpenSSL sur la ligne de commande, vous devez d'abord générer une clé publique et privée, vous devez protéger ce fichier par mot de passe en utilisant l'argument -passout, cet argument peut prendre de nombreuses formes différentes, consultez donc la documentation OpenSSL à ce sujet.
openssl genrsa -out private.pem 1024
Cela crée un fichier clé appelé private.pem qui utilise 1024 bits. Ce fichier possède en fait les clés privées et publiques, vous devez donc extraire la clé publique de ce fichier:
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
or
openssl rsa -in private.pem -pubout > public.pem
or
openssl rsa -in private.pem -pubout -out public.pem
Vous aurez maintenant public.pem contenant uniquement votre clé publique, vous pouvez le partager librement avec des tiers. Vous pouvez tout tester en chiffrant simplement quelque chose vous-même à l'aide de votre clé publique, puis en déchiffrant à l'aide de votre clé privée, nous avons d'abord besoin d'un peu de données pour chiffrer:
Exemple de fichier:
echo 'too many secrets' > file.txt
Vous avez maintenant quelques données dans file.txt, permet de les crypter en utilisant OpenSSL et la clé publique:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
Cela crée une version cryptée de file.txt en l'appelant file.ssl, si vous regardez ce fichier, c'est juste du courrier indésirable binaire, rien de très utile à personne. Vous pouvez maintenant le décrypter à l'aide de la clé privée:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
Vous aurez maintenant un fichier non crypté dans decrypted.txt:
cat decrypted.txt
|output -> too many secrets
Options de RSA TOOLS dans OpenSSL
NOM
rsa - Outil de traitement des clés RSA
SYNOPSIS
openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in nom_fichier] [-passin arg] [-out nom_fichier] [-passout arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-identifiant moteur]
LA DESCRIPTION
La commande rsa traite les clés RSA. Ils peuvent être convertis entre différentes formes et leurs composants imprimés. Notez que cette commande utilise le format compatible SSLeay traditionnel pour le chiffrement par clé privée: les applications plus récentes doivent utiliser le format PKCS # 8 plus sécurisé à l'aide de l'utilitaire pkcs8.
OPTIONS DE COMMANDE
-help
Imprimez un message d'utilisation.
-inform DER|NET|PEM
Ceci spécifie le format d'entrée. L'option DER utilise une forme encodée ASN1 DER compatible avec le format PKCS # 1 RSAPrivateKey ou SubjectPublicKeyInfo. Le formulaire PEM est le format par défaut: il se compose du format DER base64 encodé avec des lignes d'en-tête et de pied de page supplémentaires. En entrée, les clés privées au format PKCS # 8 sont également acceptées. Le formulaire NET est un format décrit dans la section NOTES.
-outform DER|NET|PEM
Cela spécifie le format de sortie, les options ont la même signification que l'option -inform.
-in filename
Cela spécifie le nom du fichier d'entrée pour lire une clé ou une entrée standard si cette option n'est pas spécifiée. Si la clé est cryptée, une phrase de passe sera demandée.
-passin arg
la source du mot de passe du fichier d'entrée. Pour plus d'informations sur le format d'arg, consultez la section ARGUMENTS DE LA PHASE DE PASSE dans openssl.
-out filename
Cela spécifie le nom du fichier de sortie dans lequel écrire une clé ou une sortie standard si cette option n'est pas spécifiée. Si des options de cryptage sont définies, une phrase de passe sera demandée. Le nom de fichier de sortie ne doit pas être le même que le nom de fichier d'entrée.
-passout password
la source du mot de passe du fichier de sortie. Pour plus d'informations sur le format d'arg, consultez la section ARGUMENTS DE PHRASE DE PASSE dans openssl.
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
Ces options chiffrent la clé privée avec le chiffrement spécifié avant de la sortir. Une phrase de passe est demandée. Si aucune de ces options n'est spécifiée, la clé est écrite en texte brut. Cela signifie que l'utilisation de l'utilitaire rsa pour lire une clé chiffrée sans option de chiffrement peut être utilisée pour supprimer la phrase de passe d'une clé, ou en définissant les options de chiffrement, il peut être utilisé pour ajouter ou modifier la phrase de passe. Ces options ne peuvent être utilisées qu'avec des fichiers de sortie au format PEM.
-text
imprime les différents composants de clé publique ou privée en texte brut en plus de la version codée.
-noout
cette option empêche la sortie de la version codée de la clé.
-modulus
cette option affiche la valeur du module de la clé.
-check
cette option vérifie la cohérence d'une clé privée RSA.
-pubin
par défaut une clé privée est lue dans le fichier d'entrée: avec cette option une clé publique est lue à la place.
-pubout
par défaut, une clé privée est émise: avec cette option, une clé publique sera émise à la place. Cette option est automatiquement définie si l'entrée est une clé publique.
-RSAPublicKey_in, -RSAPublicKey_out
comme -pubin et -pubout sauf que le format RSAPublicKey est utilisé à la place.
-engine id
la spécification d'un moteur (par sa chaîne d'ID unique) amènera rsa à essayer d'obtenir une référence fonctionnelle au moteur spécifié, l'initialisant ainsi si nécessaire. Le moteur sera alors défini par défaut pour tous les algorithmes disponibles.
REMARQUES
Le format de clé privée PEM utilise les lignes d'en-tête et de pied de page:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
Le format de clé publique PEM utilise les lignes d'en-tête et de pied de page:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
Le format PEM RSAPublicKey utilise les lignes d'en-tête et de pied de page:
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----
Le formulaire NET est un format compatible avec les anciens serveurs Netscape et les fichiers Microsoft IIS .key, il utilise RC4 non salé pour son cryptage. Il n'est pas très sécurisé et ne doit donc être utilisé qu'en cas de besoin.
Certaines versions plus récentes d'IIS contiennent des données supplémentaires dans les fichiers .key exportés. Pour les utiliser avec l'utilitaire, affichez le fichier avec un éditeur binaire et recherchez la chaîne "clé privée", puis retracez jusqu'à la séquence d'octets 0x30, 0x82 (il s'agit d'une SÉQUENCE ASN1). Copiez toutes les données à partir de ce point dans un autre fichier et utilisez-les comme entrée pour l'utilitaire rsa avec l'option -inform NET.
EXEMPLES
Pour supprimer la phrase secrète d'une clé privée RSA:
openssl rsa -in key.pem -out keyout.pem
Pour crypter une clé privée à l'aide de triple DES:
openssl rsa -in key.pem -des3 -out keyout.pem
Pour convertir une clé privée du format PEM au format DER:
openssl rsa -in key.pem -outform DER -out keyout.der
Pour imprimer les composants d'une clé privée sur la sortie standard:
openssl rsa -in key.pem -text -noout
Pour simplement sortir la partie publique d'une clé privée:
openssl rsa -in key.pem -pubout -out pubkey.pem
Sortez la partie publique d'une clé privée au format RSAPublicKey:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
Pour extraire la clé et le cert d'un fichier pem:
openssl pkey -in foo.pem -out foo.key
Une autre méthode pour extraire la clé ...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der
0. Prérequis : openssl
doit être installé. Sous Windows, si Git Bash
est installé, essayez ça! Des binaires alternatifs peuvent être trouvés ici.
1. Extrait .key
de .pem
:
openssl pkey -in cert.pem -out cert.key
2. Extrait .crt
de .pem
:
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Un .crt stocke le certificat .. au format pem. Ainsi, un .pem, bien qu'il puisse également avoir d'autres choses comme un csr (demande de signature de certificat), une clé privée, une clé publique ou d'autres certificats, lorsqu'il stocke juste un certificat, est la même chose qu'un .crt.
Un pem est un fichier encodé en base 64 avec un en-tête et un pied de page entre chaque section.
Pour extraire une section particulière, un script perl tel que le suivant est totalement valide, mais n'hésitez pas à utiliser certaines des commandes openssl.
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
où == 1 peut être changé dans la section dont vous avez besoin. Évidemment, si vous connaissez exactement l'en-tête et le pied de page dont vous avez besoin et qu'il n'y en a qu'un dans le fichier (généralement le cas si vous ne conservez que le certificat et la clé), vous pouvez le simplifier:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem