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 -----BEGINet 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:
Vérifiez le format du server.key. Je supposais seulement que c'était RSA. Mais la lecture de la première ligne du fichier vous le dira probablement.
maxwellb
10
Juste un avertissement qui cat server.crt server.key > server.pemne 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.
Graham Walters
1
Merci Graham. Différents outils généreront les fichiers différemment et, en fin de compte, une certaine vérification est bonne. Lorsque j'ai effectué ces étapes, les fichiers se terminaient par une nouvelle ligne, par exemple.
maxwellb
L'astuce sur la concaténation des fichiers .crt et .key ensemble a été très utile. Je voulais utiliser mon certificat avec stunnel3, mais il n'avait aucun moyen de spécifier le fichier de clés. L'utilisation de la concaténation a fonctionné. (En fait, puisque stunnel3 est un programme Perl, je lui ai moi-même ajouté une option pour lire le fichier clé. Cependant, depuis que j'ai vu plus tard la concaténation a fonctionné, j'ai rétabli stunnel3 à son code d'origine.)
LS
2
Juste une bosse pour dire que cat server.crt server.key > server.includesprivatekey.pemest utile pour SSL avec haproxy 1.5.
jimm101
224
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:
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://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
FloatingRock
1
La deuxième commande ne fait rien si votre entrée est un fichier pem, donc en supposant que ce soit le cas, vous n'avez besoin que de la première commande
Kristofer
Impressionnant! Cela fonctionne bien pour moi! Je viens de convertir mes fichiers .key et .crt en .pem en utilisant vos lignes de code, puis j'ai téléchargé (copier / coller) via la console AWS. Merci!
Diego D
79
Un pemfichier 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:
je continue à obtenir-bash: server.key.pem: Permission denied
tq
2
@tq: Cela signifie que vous n'êtes pas autorisé à lire ou à écrire ce fichier.
STH
merci @sth cherchera la permission. mais je faisais cela avec les commandes sudo
tq
8
@tq: cat server.crt server.key | sudo tee server.pem
dimir
2
attention aux sauts de ligne manquants notre fichier pem peut avoir des lignes brouillées comme ----- FIN DU CERTIFICAT ---------- BEGIN CERTIFICATE -----
Wolfgang Fahl
24
De plus, si vous ne souhaitez pas qu'il demande une phrase secrète, vous devez exécuter la commande suivante:
Si vous voulez un fichier commençant par -----BEGIN RSA PRIVATE KEY-----et en avoir un qui commence par -----BEGIN ENCRYPTED PRIVATE KEY-----, c'est la commande que vous souhaitez utiliser.
Philippe Gerber
18
c'est la meilleure option pour créer un fichier .pem
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:
une autre option consiste simplement à transmettre le certificat non strict openssl x509. Il produira un certificat PEM valide: cat certificate.crt | openssl x509 > certificate.pem
T0xicCode
Si vous voulez tout obtenir, de "COMMENCER" à la fin du fichier, c'est un travail pour sed. Plus précisément, vous voulez quelque chose comme sed -n '/--BEGIN/,$p' cert.crtdans 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 pcommande (print) s'applique aux lignes entre la première ligne qui contient --BEGINet la fin du fichier ( $).
dannysauer
4
J'essayais de passer de godaddy au moteur d'application. Qu'est-ce que l'astuce a été d'utiliser cette ligne:
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é:
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" ..
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
Cela n'a pas fonctionné pour moiAn error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Adam Raudonis
4
Téléchargez le certificat du portail provisoire par appleId,
Exporter le certificat depuis le porte-clés et donner le nom (Certificates.p12),
Ouvrez le dossier terminal et goto où vous enregistrez au-dessus du fichier Certificates.p12,
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
.pem
en.crt
et.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
Pour server.key, utilisez
openssl rsa
à la place deopenssl 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:
Je recommanderais de nommer les fichiers avec "includesprivatekey" pour vous aider à gérer les autorisations que vous conservez avec ce fichier.
la source
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:
Merci NCZ
Edit: Comme le dit @floatingrock
Avec AWS, n'oubliez pas d'ajouter le nom de fichier avec
file://
. Cela ressemblera donc à:http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
la source
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:la source
-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:
la source
-----BEGIN RSA PRIVATE KEY-----
et en avoir un qui commence par-----BEGIN ENCRYPTED PRIVATE KEY-----
, c'est la commande que vous souhaitez utiliser.c'est la meilleure option pour créer un fichier .pem
la source
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.
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:
la source
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 lap
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:
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é:
J'ai ensuite utilisé ces instructions de Trouble with Google Apps Custom Domain SSL , à savoir:
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é.
la source
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
Et pour supprimer votre téléchargement précédent, vous pouvez le faire
la source
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
la source
la source