Comment puis-je créer un fichier PEM à partir d'un certificat SSL?
Ce sont les fichiers dont je dispose:
.crt
server.csr
server.key
Comment puis-je créer un fichier PEM à partir d'un certificat SSL?
Ce sont les fichiers dont je dispose:
.crt
server.csr
server.key
Réponses:
Vos clés peuvent déjà être 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 format ASCII et non binaire. Le certificat est déjà au format PEM. Modifiez simplement 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
.
Le 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 cette utilisation:
cat server.crt server.key > server.includesprivatekey.pem
Je recommanderais de nommer les fichiers avec "includesprivatekey" pour vous aider à gérer les autorisations que vous conservez avec ce fichier.
cat server.crt server.key > server.pem
ne placera pas le commentaire ouvert sur sa propre ligne, ce qui semble être une exigence. Le courrier de messagerie m'a donné l'enfer et il m'a fallu des heures pour comprendre ce qui n'allait pas.
server.crt server.key > server.includesprivatekey.pem
est utile pour SSL avec haproxy 1.5.
J'avais besoin de le faire pour un AWS ELB. Après avoir été battu à plusieurs reprises par le dialogue, voici enfin 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://
. Cela ressemblera donc à:
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
file://
. Cela ressemblera donc à:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
Un pem
fichier 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
-bash: server.key.pem: Permission denied
De plus, si vous ne souhaitez pas qu'il demande une phrase secrète, vous devez exécuter la commande suivante:
openssl rsa -in server.key -out server.key
-----BEGIN RSA PRIVATE KEY-----
et en avoir un qui commence par -----BEGIN ENCRYPTED PRIVATE KEY-----
, c'est la commande que vous souhaitez utiliser.
Ce que j'ai observé est: si vous utilisez openssl pour générer des certificats, il capture à la fois la partie texte et la partie certificat base64 dans le fichier crt. Le format pem strict indique ( définition wiki ) que le fichier doit commencer et se terminer par BEGIN et END.
.pem - (Privacy Enhanced Mail) Certificat DER encodé en Base64, entre "----- BEGIN CERTIFICATE -----" et "----- END CERTIFICATE -----"
Donc, pour certaines bibliothèques (j'ai rencontré cela en java) qui s'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 grepez 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 ça marche pour moi, en gros ça filtre le texte à partir de la ligne BEGIN:
grep -A 1000 BEGIN cert.crt> cert.pem
openssl x509
. Il produira un certificat PEM valide: cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
dans ce cas. Pour expliquer cela: le "-n" indique à sed de ne rien imprimer par défaut, puis l'expression de plage /--BEGIN/,$
fait que la p
commande (print) s'applique aux lignes entre la première ligne qui contient --BEGIN
et la fin du fichier ( $
).
J'essayais de passer de godaddy au moteur d'application. Qu'est-ce que l'astuce a été d'utiliser cette ligne:
openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr
Exactement tel quel, mais en remplaçant le nom par mon nom de domaine (pas que cela comptait vraiment)
Et j'ai répondu à toutes les questions concernant le nom commun / l'organisation comme www.name.com
Ensuite, j'ai ouvert le csr, l'ai copié, collé dans go daddy, puis téléchargé, décompressé, navigué vers le dossier décompressé avec le terminal et entré:
cat otherfilegodaddygivesyou.crt gd_bundle-g2-g1.crt > name.crt
J'ai ensuite utilisé ces instructions de Trouble with Google Apps Custom Domain SSL , à savoir:
openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem
exactement comme c'est, sauf au lieu de privateKey.key j'ai utilisé name.unencrypted.priv.key, et 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 codé PEM", et j'ai téléchargé le fichier private.pem pour la "clé privée RSA codée PEM non cryptée" ..
.. Et cela a finalement fonctionné.
En essayant de télécharger un certificat GoDaddy sur AWS, j'ai échoué plusieurs fois, mais au final, c'était assez simple. Pas besoin de convertir quoi que ce soit en .pem. Vous devez juste être sûr d'inclure le certificat de bundle 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 téléchargement précédent, vous pouvez le faire
aws iam delete-server-certificate --server-certificate-name mypreviouscert
An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Exécutez les commandes ci-dessous:
a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,
b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
openssl pkcs12 -in YOUR_CERTIFICATE.p12 -out YOUR_CERTIFICATE.pem -nodes -clcerts
.pem
en.crt
et.key
.