Convertir .pem en .crt et .key

Réponses:

503

J'ai pu convertir pem en crt en utilisant ceci:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt
CB
la source
13
L'utilisation d'un éditeur de texte n'est pas la meilleure approche. Pour extraire la clé sous forme PKCS8: 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
Andron
131
J'ai essayé ta commande mais j'avais:unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Damien Carol
15
le raccourci clavier (openssl pkey -in mumble.pem -out mumble-key.pem) donne ceci: impossible de charger la clé 129051320116880: erreur: 0906D06C: routines PEM: PEM_read_bio: pas de ligne de départ: pem_lib.c: 703: attente: ANY CLÉ PRIVÉE
mylord
2
openssl rsa -in your-cert.pem -outform pem -out your-key.pem
troyfolger
3
@Andron pkey et rsa me donnent une Expecting: ANY PRIVATE KEYerreur.
Aero Wang
394

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
    
à feuilles persistantes
la source
32
Cela ne répond toujours pas à la question de savoir comment obtenir la clé privée du certificat binaire (exporté).
bbaassssiiee
merci, je me demande si j'ai un PEM contenant une clé privée et des certificats, comment puis-je obtenir des certificats uniquement? Je sais que je peux copier la partie certificats à partir de celui-ci à l'aide de l'éditeur de texte, mais je veux savoir s'il existe une commande openssl, merci
workplaylifecycle
46

Pour extraire la clé et le cert d'un fichier pem:

Extraire la clé

openssl pkey -in foo.pem -out foo.key

Une autre méthode pour extraire la clé ...

openssl rsa -in foo.pem -out foo.key

Extraire tous les certificats, y compris la chaîne CA

openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert

Extraire le premier certificat textuellement comme DER

openssl x509 -in foo.pem -outform DER -out first-cert.der
Autoroute de la vie
la source
7
openssl x509 -outform der -in C: \ Users \ Greg \ .ssh \ e360_stork_listener.pem -out C: \ Users \ Greg \ .ssh \ e360_stork_listener.crt impossible de charger le certificat 4294956672: erreur: 0906D06C: routines PEM: PEM_read_bio: pas de ligne de départ: pem_lib.c: 708: attend: CERTIFICAT DE
CONFIANCE
5

0. Prérequis : openssl doit être installé. Sous Windows, si Git Bashest installé, essayez ça! Des binaires alternatifs peuvent être trouvés ici.

1. Extrait .keyde .pem:

openssl pkey -in cert.pem -out cert.key

2. Extrait .crtde .pem:

openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Saikat
la source
1

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
Gerard ONeill
la source
0

Si vous avez posé cette question parce que vous utilisez, mkcertl'astuce est que le .pemfichier est le certificat et le -key.pemfichier est la clé.

(Vous n'avez pas besoin de convertir, exécutez simplement mkcert yourdomain.dev otherdomain.dev)

Barney
la source