Comment créer un fichier PEM à partir d'un certificat SSL?
Ce sont les fichiers que j'ai disponibles:
.crt
server.csr
server.key
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.
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
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
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
c'est la meilleure option pour créer un fichier .pem
openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts
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
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é.
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
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
openssl pkcs12 - dans YOUR_CERTIFICATE.p12 - sur YOUR_CERTIFICATE.pem - nodes - clcerts