web-dev-qa-db-fra.com

Conversion de .pem en .crt et .key

Quelqu'un peut-il me dire comment faire pour extraire/convertir les fichiers de certificat .crt et de clé privée .key à partir d'un fichier .pem? Je viens de lire qu'ils sont interchangeables, mais pas comment.

294
Lanbo

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

openssl x509 -outform der -in your-cert.pem -out your-cert.crt
417
C.B.

Conversion à l'aide d'OpenSSL

Ces commandes vous permettent de convertir des certificats et des clés dans différents formats afin de les rendre compatibles avec des types de serveurs ou de logiciels spécifiques.

  • Convertir un fichier DER (.crt .cer .der) en PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
  • Convertir un fichier PEM en DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Conversion d'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.
    
  • Conversion d'un fichier de certificat PEM et d'une clé privée en PKCS # 12 (.pfx .p12)

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    
  • Convertir PEM en CRT (fichier .CRT)

    openssl x509 -outform der -in certificate.pem -out certificate.crt
    

OpenSSL Convert PEM

  • Conversion PEM en DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Convertir de PEM à P7B

    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
    
  • Conversion de PEM en PFX

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    

OpenSSL Convert DER

  • Conversion DER en PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    

OpenSSL Convert P7B

  • Convertir de 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

  • Conversion de PFX en PEM

    openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
    

Générer des clés RSA par OpenSSL

  • Si vous utilisez OpenSSL sur la ligne de commande, vous devez d’abord générer les clés publique et privée. Protégez ce fichier par un mot de passe à l’aide de l’argument -passout. Cet argument peut prendre différentes formes. Consultez la documentation OpenSSL à ce sujet.

    openssl genrsa -out private.pem 1024
    
  • Cela crée un fichier de clé appelé private.pem qui utilise 1024 bits. Ce fichier contient les clés publique et privée. 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 pourrez le partager librement avec des tiers. Vous pouvez tout tester en cryptant vous-même quelque chose en utilisant votre clé publique, puis en le déchiffrant en utilisant 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 des données dans le fichier file.txt. Cryptons-les à l'aide d'OpenSSL et de la clé publique:

    openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
    
  • Cela crée une version chiffrée de file.txt en l’appelant fichier.ssl. Si vous regardez ce fichier, c’est juste de la malbouffe binaire, rien de très utile pour qui que ce soit. Maintenant, vous pouvez le décrypter en utilisant la clé privée:

    openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
    
  • Vous allez maintenant avoir un fichier non crypté dans decrypted.txt:

    cat decrypted.txt
    |output -> too many secrets
    

Options RSA TOOLS dans OpenSSL

  • NOM

    rSA - Outil de traitement de clé RSA

  • SYNOPSIS

    openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in nomfichier] [-passin arg] [-out nomfichier] [-passout arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [id-moteur]

  • 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 traditionnel compatible SSLeay pour le chiffrement à clé privée: les applications les plus récentes doivent utiliser le format plus sécurisé PKCS # 8 à 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 codée ASN1 DER compatible avec le format RSAPrivateKey ou SubjectPublicKeyInfo de PKCS # 1. Le format PEM est le format par défaut: il se compose du format DER codé en base64 avec des lignes d’en-tête et de pied de page supplémentaires. Lors de la saisie, les clés privées au format PKCS # 8 sont également acceptées. Le format NET est un format décrit dans la section NOTES.

    -outform DER|NET|PEM
    

    Ceci spécifie le format de sortie, les options ont la même signification que l'option -inform.

    -in filename
    

    Ceci spécifie le nom du fichier d'entrée à partir duquel 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 de mot de passe du fichier d'entrée. Pour plus d'informations sur le format de arg, voir la section Arguments PASS PHRASE dans openssl.

    -out filename
    

    Ceci spécifie le nom du fichier de sortie sur lequel écrire une clé ou une sortie standard si cette option n'est pas spécifiée. Si des options de chiffrement sont définies, une phrase de passe sera demandée. Le nom de fichier en sortie ne doit pas être identique à celui en entrée.

    -passout password
    

    la source du mot de passe du fichier de sortie. Pour plus d'informations sur le format de arg, voir la section Arguments PASS PHRASE 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 secrète d'une clé ou en définissant les options de chiffrement qu'il peut être utilisé pour ajouter ou modifier la phrase secrète. Ces options ne peuvent être utilisées qu'avec des fichiers de sortie au format PEM.

    -text
    

    imprime les divers 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 sortie: avec cette option, une clé publique sera sortie à 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'identifiant unique) fera que rsa tentera d'obtenir une référence fonctionnelle au moteur spécifié, l'initialisant ainsi si nécessaire. Le moteur sera alors défini comme moteur par défaut pour tous les algorithmes disponibles.

  • NOTES

    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 le codage RC4 non salé. Ce n'est pas très sécurisé et ne devrait donc être utilisé que si nécessaire.

    Certaines versions plus récentes de 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 remontez à 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 de 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 chiffrer 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 une sortie standard:

      openssl rsa -in key.pem -text -noout
    

    Pour sortir simplement la partie publique d'une clé privée:

      openssl rsa -in key.pem -pubout -out pubkey.pem
    

    Sort la partie publique d'une clé privée au format RSAPublicKey:

      openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    
314
evergreen

Pour extraire la clé et le certificat 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 cert textuellement en DER

openssl x509 -in foo.pem -outform DER -out first-cert.der
33
Highway of Life