Ihre Schlüssel haben möglicherweise bereits das PEM-Format, werden jedoch nur mit .crt oder .key benannt.
Wenn der Inhalt der Datei mit beginnt -----BEGINund Sie ihn in einem Texteditor lesen können:
Die Datei verwendet base64, das in ASCII und nicht im Binärformat lesbar ist. Das Zertifikat ist bereits im PEM-Format. Ändern Sie einfach die Erweiterung in .pem.
Wenn die Datei binär ist:
Für die Datei server.crt würden Sie verwenden
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
Verwenden Sie für server.key openssl rsaanstelle von openssl x509.
Die Datei server.key ist wahrscheinlich Ihr privater Schlüssel, und die CRT-Datei ist das zurückgegebene, signierte x509-Zertifikat.
Wenn dies für einen Webserver gilt und Sie nicht angeben können, einen separaten privaten und öffentlichen Schlüssel zu laden:
Möglicherweise müssen Sie die beiden Dateien verketten. Für diesen Gebrauch:
Überprüfen Sie das Format der Datei server.key. Ich nahm nur an, dass es RSA war. Aber das Lesen der ersten Zeile der Datei wird Ihnen das wahrscheinlich sagen.
Maxwellb
10
Nur ein Heads-up, cat server.crt server.key > server.pemdas den offenen Kommentar nicht in eine eigene Zeile setzt, was eine Voraussetzung zu sein scheint. Kurierpost gab mir die Hölle und ich brauchte Stunden, um herauszufinden, was falsch lief.
Graham Walters
1
Danke Graham. Verschiedene Tools generieren die Dateien unterschiedlich, und letztendlich ist eine gewisse Überprüfung gut. Als ich diese Schritte ausführte, endeten die Dateien beispielsweise mit einem Zeilenumbruch.
Maxwellb
Der Tipp zum Verketten der .crt- und .key-Dateien war sehr hilfreich. Ich wollte mein Zertifikat mit stunnel3 verwenden, aber es gab keine Möglichkeit, die Schlüsseldatei anzugeben. Die Verwendung der Verkettung hat funktioniert. (Da stunnel3 ein Perl-Programm ist, habe ich selbst eine Option zum Lesen der Schlüsseldatei hinzugefügt. Da ich jedoch später sah, dass die Verkettung funktioniert hat, habe ich stunnel3 auf den ursprünglichen Code zurückgesetzt.)
LS
2
Nur eine Kleinigkeit zu sagen, dass Katze server.crt server.key > server.includesprivatekey.pemfür SSL mit Haproxy 1.5 nützlich ist.
jimm101
224
Ich musste dies für eine AWS ELB tun. Nachdem ich viele Male vom Dialog verprügelt wurde, hat das für mich endlich funktioniert:
Vergessen Sie bei AWS nicht, den Dateinamen mit voranzustellen file://. So wird es aussehen: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
Der zweite Befehl tut nichts, wenn Ihre Eingabe eine PEM-Datei ist. Unter der Annahme, dass dies der Fall ist, benötigen Sie nur den ersten Befehl
Kristofer
Genial! Das hat bei mir gut funktioniert! Ich habe gerade meine .key- und .crt-Dateien mit Ihren Codezeilen in .pem konvertiert und dann über die AWS-Konsole hochgeladen (kopieren / einfügen). Vielen Dank!
Diego D
79
Eine pemDatei enthält das Zertifikat und den privaten Schlüssel. Dies hängt vom Format Ihres Zertifikats / Schlüssels ab, ist aber wahrscheinlich so einfach:
@tq: Das bedeutet, dass Sie diese Datei nicht lesen oder schreiben dürfen.
etw
danke @sth wird um Erlaubnis bitten. aber ich tat dies mit sudo befehlen
tq
8
@tq: cat server.crt server.key | sudo tee server.pem
dimir
2
Achten Sie auf fehlende Zeilenumbrüche. Unsere PEM-Datei enthält möglicherweise verstümmelte Zeilen wie ----- END CERTIFICATE ---------- BEGIN CERTIFICATE -----
Wolfgang Fahl
24
Wenn Sie nicht möchten, dass eine Passphrase abgefragt wird, müssen Sie den folgenden Befehl ausführen:
Wenn Sie möchten, dass eine Datei mit -----BEGIN RSA PRIVATE KEY-----beginnt und mit einer beginnt -----BEGIN ENCRYPTED PRIVATE KEY-----, ist dies der Befehl, den Sie verwenden möchten.
Philippe Gerber
18
Dies ist die beste Option zum Erstellen einer PEM-Datei
Was ich beobachtet habe, ist: Wenn Sie openssl zum Generieren von Zertifikaten verwenden, werden sowohl der Textteil als auch der base64-Zertifikatsteil in der CRT-Datei erfasst. Das strenge PEM-Format besagt ( Wiki-Definition ), dass die Datei mit BEGIN und END beginnen und enden soll.
.pem - (Privacy Enhanced Mail) Base64-codiertes DER-Zertifikat, eingeschlossen zwischen "----- BEGIN CERTIFICATE -----" und "----- END CERTIFICATE -----"
Für einige Bibliotheken (die ich in Java gefunden habe), die ein striktes PEM-Format erwarten, würde die generierte CRT die Validierung als "ungültiges PEM-Format" nicht bestehen.
Selbst wenn Sie die Zeilen mit BEGIN / END CERTIFICATE kopieren oder grepen und in eine cert.pem-Datei einfügen, sollte dies funktionieren.
Folgendes mache ich, nicht sehr sauber, aber es funktioniert für mich. Im Grunde filtert es den Text ab der Zeile BEGIN:
Eine andere Möglichkeit besteht darin, das nicht strenge Zertifikat einfach weiterzuleiten openssl x509. Es wird ein gültiges PEM-Zertifikat ausgegeben: cat certificate.crt | openssl x509 > certificate.pem
T0xicCode
Wenn Sie alles von "BEGIN" bis zum Ende der Datei erhalten möchten, ist dies ein Job für sed. Insbesondere möchten Sie so etwas wie sed -n '/--BEGIN/,$p' cert.crtin diesem Fall. Um dies zu erklären: Das "-n" weist sed an, standardmäßig nichts zu drucken, und dann bewirkt der Bereichsausdruck, /--BEGIN/,$dass der pBefehl (print) auf Zeilen zwischen der ersten Zeile, die enthält, --BEGINund dem Ende der Datei ( $) angewendet wird .
Dannysauer
4
Ich habe versucht, von Godaddy zu App Engine zu wechseln. Was hat der Trick getan, war diese Zeile zu verwenden:
Genau so wie es ist, aber den Namen durch meinen Domainnamen ersetzen (nicht, dass es wirklich wichtig wäre)
Und ich beantwortete alle Fragen zum allgemeinen Namen / zur Organisation als www.name.com
Dann öffnete ich die CSR, kopierte sie, fügte sie in go daddy ein, lud sie herunter, entpackte sie, navigierte zum entpackten Ordner mit dem Terminal und gab Folgendes ein:
genau wie es ist, außer dass ich anstelle von privateKey.key name.unencrypted.priv.key und anstelle von www_mydomain_com.crt name.crt verwendet habe
Dann habe ich die Datei public.pem für das "PEM-codierte X.509-Zertifikat" auf die Administratorkonsole hochgeladen und die Datei private.pem für den "nicht verschlüsselten privaten PEM-codierten RSA-Schlüssel" hochgeladen.
Der Versuch, ein GoDaddy-Zertifikat auf AWS hochzuladen, ist mehrmals fehlgeschlagen, aber am Ende war es ziemlich einfach. Sie müssen nichts in .pem konvertieren. Sie müssen nur sicherstellen, dass das GoDaddy-Bundle-Zertifikat in den Kettenparameter aufgenommen wird, z
Dies hat bei mir nicht funktioniertAn error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Adam Raudonis
4
Zertifikat vom vorläufigen Portal von appleId herunterladen,
Exportieren Sie das Zertifikat aus der Schlüsselkette und geben Sie den Namen an (Certificates.p12).
Öffnen Sie das Terminal und gehen Sie zum Ordner, in dem Sie die Datei Certificates.p12 speichern.
Führen Sie die folgenden Befehle aus:
a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes,
b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
.pem
.crt
.key
: Konvertieren in und .Antworten:
Ihre Schlüssel haben möglicherweise bereits das PEM-Format, werden jedoch nur mit .crt oder .key benannt.
Wenn der Inhalt der Datei mit beginnt
-----BEGIN
und Sie ihn in einem Texteditor lesen können:Die Datei verwendet base64, das in ASCII und nicht im Binärformat lesbar ist. Das Zertifikat ist bereits im PEM-Format. Ändern Sie einfach die Erweiterung in .pem.
Wenn die Datei binär ist:
Für die Datei server.crt würden Sie verwenden
Verwenden Sie für server.key
openssl rsa
anstelle vonopenssl x509
.Die Datei server.key ist wahrscheinlich Ihr privater Schlüssel, und die CRT-Datei ist das zurückgegebene, signierte x509-Zertifikat.
Wenn dies für einen Webserver gilt und Sie nicht angeben können, einen separaten privaten und öffentlichen Schlüssel zu laden:
Möglicherweise müssen Sie die beiden Dateien verketten. Für diesen Gebrauch:
Ich würde empfehlen, Dateien mit "includeprivatekey" zu benennen, um die Berechtigungen zu verwalten, die Sie für diese Datei behalten.
quelle
cat server.crt server.key > server.pem
das den offenen Kommentar nicht in eine eigene Zeile setzt, was eine Voraussetzung zu sein scheint. Kurierpost gab mir die Hölle und ich brauchte Stunden, um herauszufinden, was falsch lief.server.crt server.key > server.includesprivatekey.pem
für SSL mit Haproxy 1.5 nützlich ist.Ich musste dies für eine AWS ELB tun. Nachdem ich viele Male vom Dialog verprügelt wurde, hat das für mich endlich funktioniert:
Danke NCZ
Edit: Wie @floatingrock sagt
Vergessen Sie bei AWS nicht, den Dateinamen mit voranzustellen
file://
. So sieht es aus:http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
quelle
file://
. So wird es aussehen:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
Eine
pem
Datei enthält das Zertifikat und den privaten Schlüssel. Dies hängt vom Format Ihres Zertifikats / Schlüssels ab, ist aber wahrscheinlich so einfach:quelle
-bash: server.key.pem: Permission denied
Wenn Sie nicht möchten, dass eine Passphrase abgefragt wird, müssen Sie den folgenden Befehl ausführen:
quelle
-----BEGIN RSA PRIVATE KEY-----
beginnt und mit einer beginnt-----BEGIN ENCRYPTED PRIVATE KEY-----
, ist dies der Befehl, den Sie verwenden möchten.Dies ist die beste Option zum Erstellen einer PEM-Datei
quelle
Was ich beobachtet habe, ist: Wenn Sie openssl zum Generieren von Zertifikaten verwenden, werden sowohl der Textteil als auch der base64-Zertifikatsteil in der CRT-Datei erfasst. Das strenge PEM-Format besagt ( Wiki-Definition ), dass die Datei mit BEGIN und END beginnen und enden soll.
Für einige Bibliotheken (die ich in Java gefunden habe), die ein striktes PEM-Format erwarten, würde die generierte CRT die Validierung als "ungültiges PEM-Format" nicht bestehen.
Selbst wenn Sie die Zeilen mit BEGIN / END CERTIFICATE kopieren oder grepen und in eine cert.pem-Datei einfügen, sollte dies funktionieren.
Folgendes mache ich, nicht sehr sauber, aber es funktioniert für mich. Im Grunde filtert es den Text ab der Zeile BEGIN:
quelle
openssl x509
. Es wird ein gültiges PEM-Zertifikat ausgegeben:cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
in diesem Fall. Um dies zu erklären: Das "-n" weist sed an, standardmäßig nichts zu drucken, und dann bewirkt der Bereichsausdruck,/--BEGIN/,$
dass derp
Befehl (print) auf Zeilen zwischen der ersten Zeile, die enthält,--BEGIN
und dem Ende der Datei ($
) angewendet wird .Ich habe versucht, von Godaddy zu App Engine zu wechseln. Was hat der Trick getan, war diese Zeile zu verwenden:
Genau so wie es ist, aber den Namen durch meinen Domainnamen ersetzen (nicht, dass es wirklich wichtig wäre)
Und ich beantwortete alle Fragen zum allgemeinen Namen / zur Organisation als www.name.com
Dann öffnete ich die CSR, kopierte sie, fügte sie in go daddy ein, lud sie herunter, entpackte sie, navigierte zum entpackten Ordner mit dem Terminal und gab Folgendes ein:
Dann habe ich die folgenden Anweisungen von Trouble with Google Apps Custom Domain SSL verwendet :
genau wie es ist, außer dass ich anstelle von privateKey.key name.unencrypted.priv.key und anstelle von www_mydomain_com.crt name.crt verwendet habe
Dann habe ich die Datei public.pem für das "PEM-codierte X.509-Zertifikat" auf die Administratorkonsole hochgeladen und die Datei private.pem für den "nicht verschlüsselten privaten PEM-codierten RSA-Schlüssel" hochgeladen.
Und das hat endlich geklappt.
quelle
Der Versuch, ein GoDaddy-Zertifikat auf AWS hochzuladen, ist mehrmals fehlgeschlagen, aber am Ende war es ziemlich einfach. Sie müssen nichts in .pem konvertieren. Sie müssen nur sicherstellen, dass das GoDaddy-Bundle-Zertifikat in den Kettenparameter aufgenommen wird, z
Und um Ihren vorherigen fehlgeschlagenen Upload zu löschen, können Sie dies tun
quelle
An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Führen Sie die folgenden Befehle aus:
a)
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,b)
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
quelle
quelle