web-dev-qa-db-fra.com

Comment obtenir un fichier .pem à partir de fichiers .key et .crt?

Comment créer un fichier PEM à partir d'un certificat SSL?

Ce sont les fichiers que j'ai disponibles:

  • .crt
  • server.csr
  • server.key
545
Sergio Rodriguez

Vos clés sont peut-être déjà au format PEM, mais simplement nommées avec .crt ou .key.

Si le contenu du fichier commence par -----BEGIN et que vous pouvez le lire dans un éditeur de texte:

Le fichier utilise base64, qui est lisible en ASCII, pas au format binaire. Le certificat est déjà au format PEM. Il suffit de changer l'extension en .pem.

Si le fichier est en binaire:

Pour le server.crt, vous utiliseriez

openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem

Pour server.key, utilisez openssl rsa à la place de openssl x509.

Server.key est probablement votre clé privée et le fichier .crt est le certificat x509 renvoyé et signé.

S'il s'agit d'un serveur Web et que vous ne pouvez pas spécifier le chargement d'une clé privée et publique distincte:

Vous devrez peut-être concaténer les deux fichiers. Pour cet usage:

cat server.crt server.key > server.includesprivatekey.pem

Je vous recommande de nommer les fichiers avec "includesprivatekey" pour vous aider à gérer les autorisations que vous conservez avec ce fichier.

720
maxwellb

Je devais le faire pour un AWS ELB. Après avoir été battu plusieurs fois par le dialogue, voici finalement ce qui a fonctionné pour moi:

openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem

Merci NCZ

Edit: Comme le dit @floatingrock

Avec AWS, n'oubliez pas d'ajouter le nom de fichier avec file://. Donc ça va ressembler à:

 aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://path/to/server.crt --private-key file://path/to/private.key --path /cloudfront/static/

http://docs.aws.Amazon.com/cli/latest/reference/iam/upload-server-certificate.html

209
slf

Un fichier pem contient le certificat et la clé privée. Cela dépend du format de votre certificat/clé, mais c'est probablement aussi simple que cela:

cat server.crt server.key > server.pem
77
sth

De plus, si vous ne souhaitez pas que le mot de passe soit demandé, vous devez exécuter la commande suivante:

openssl rsa -in server.key -out server.key
22
rahul

c'est la meilleure option pour créer un fichier .pem

openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts
17
GOrozco58

En essayant de télécharger un certificat GoDaddy sur AWS, j'ai échoué à plusieurs reprises, mais au final, c'était assez simple. Pas besoin de convertir quoi que ce soit en .pem. Vous devez simplement vous assurer d'inclure le certificat de l'ensemble GoDaddy dans le paramètre de chaîne, par exemple.

aws iam upload-server-certificate
    --server-certificate-name mycert
    --certificate-body file://try2/40271b1b25236fd1.crt
    --private-key file://server.key
    --path /cloudfront/production/
    --certificate-chain file://try2/gdig2_bundle.crt

Et pour supprimer votre précédent téléchargement échoué, vous pouvez le faire.

aws iam delete-server-certificate --server-certificate-name mypreviouscert
4
skensell

J'essayais de passer de GoDaddy au moteur d'applications. Qu'est-ce que l'astuce utilisait cette ligne:

openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr

Exactement tel quel, mais remplacer nom par mon nom de domaine (même s'il importait vraiment)

Et j'ai répondu à toutes les questions concernant le nom commun/l'organisation en tant que www.name.com

Ensuite, j'ai ouvert le Csr, je l'ai copié, collé dans Go Daddy, puis téléchargé, téléchargé, décompressé, navigué dans le dossier décompressé avec le terminal et entré:

cat otherfilegodaddygivesyou.crt Gd_bundle-g2-g1.crt > name.crt

Ensuite, j'ai utilisé ces instructions de Problème avec le domaine SSL personnalisé de Google Apps , qui étaient:

openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem

exactement tel quel, sauf qu'au lieu de privateKey.key j'ai utilisé name.unencrypted.priv.key et qu'au lieu de www_mydomain_com.crt, j'ai utilisé name.crt

Ensuite, j'ai téléchargé le fichier public.pem sur la console d'administration pour le "certificat X.509 PEM codé" et le fichier private.pem pour la "clé privée RSA codée PEM non cryptée" ..

.. Et cela a finalement fonctionné.

4
user2738183

Ce que j’ai observé, c’est que si vous utilisez openssl pour générer des certificats, il capture à la fois la partie texte et la partie certificat base64 du fichier crt. Le format strict de pem indique ( définition du wiki ) que le fichier doit commencer et se terminer par BEGIN et END.

.pem - (certificat de confidentialité amélioré) Certificat DER codé en Base64, encadré par "----- BEGIN CERTIFICATE -----" et "----- END CERTIFICATE -----"

Donc, pour certaines bibliothèques (j'ai rencontré cela en Java) qui attendent un format pem strict, le crt généré échouerait à la validation en tant que 'format pem invalide'.

Même si vous copiez ou corrigez les lignes avec BEGIN/END CERTIFICATE et que vous les collez dans un fichier cert.pem, cela devrait fonctionner.

Voici ce que je fais, pas très propre, mais fonctionne pour moi, fondamentalement, il filtre le texte à partir de la ligne BEGIN:

grep -A 1000 BEGIN cert.crt> cert.pem

4
adityalad
  1. Téléchargez le certificat du portail provisoire de appleId,
  2. Exporter le certificat de la chaîne principale et donner son nom (Certificates.p12),
  3. Ouvrez le terminal et le dossier goto où vous sauvegardez le fichier Certificates.p12,
  4. Exécuter ci-dessous les commandes:

    a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes,

    b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts

  5. Votre fichier .pem prêt "pushcert.pem".
4
Ashvin Ajadiya
  • Terminal ouvert.
  • Accédez au dossier dans lequel se trouve votre certificat.
  • Exécutez la commande ci-dessous en remplaçant nom par votre certificat.

openssl pkcs12 - dans YOUR_CERTIFICATE.p12 - sur YOUR_CERTIFICATE.pem - nodes - clcerts

  • J'espère que ça va marcher !!
0
Dhaval H. Nena