790 Stimmen

Wie erhält man eine .pem-Datei aus .key- und .crt-Dateien?

Wie kann ich eine PEM-Datei aus einem SSL-Zertifikat erstellen?

Dies sind die Dateien, die mir zur Verfügung stehen:

  • .crt
  • server.csr
  • server.key

4 Stimmen

13voto

maximus Punkte 880

Alle Dateien (*.crt, server.csr, server.key) können bereits im PEM-Format vorliegen. Was mit diesen Dateien zu tun ist, hängt davon ab, wie Sie sie verwenden wollen oder welches Tool sie verwendet und welches Format es benötigt.

Ich werde hier etwas weiter ausholen und erklären, welche verschiedenen Formate für die Speicherung von Kryptomaterialien verwendet werden und wie man sie erkennt bzw. in ein anderes Format konvertiert.

Normen

Normen

Inhaltliches Format

Dateikodierung

Möglicher Inhalt

X509

X

Bescheinigungen

PKCS#1

X

RSA-Schlüssel (öffentlich/privat)

PKCS#7

X

Zertifikate, CRLs

PKCS#8

X

Private Schlüssel, verschlüsselte private Schlüssel

PKCS#12

X

Zertifikate, CRLs, private Schlüssel

JKS

X

Zertifikate, private Schlüssel

PEM

X

DER

X

Gemeinsame Kombinationen

Inhalt \ Kodierung

PEM (*)

DER (**)

Binär

X509

X

X

PKCS#1

X

X

PKCS#7 (***)

X

X

PKCS#8

X

X

PKCS#12 (***)

X

JKS (***)

X

これは . erklärt dasselbe + Befehle für Konvertierung/Überprüfung/Inspektion.

Abschließend noch einige typische Schritte für die Arbeit mit Kryptographie/PKI-Materialien:

  • Verstehen, in welchem Format sie vorliegen (Überprüfungs-/Inspektionsbefehle verwenden)
  • Verstehen, in welchem Format sie benötigt werden (Dokument lesen)
  • Verwenden Sie Konvertierungsbefehle, um die Dateien zu konvertieren
  • Optional: Verwendung von Verifizierungs-/Inspektionsbefehlen zur Überprüfung der konvertierten Dateien

9voto

Ich habe versucht, von godaddy zu app engine zu wechseln. Was hat der Trick war mit dieser Zeile:

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

Genau so, wie es ist, nur dass ich den Namen durch meinen Domänennamen ersetzt habe (nicht, dass es wirklich wichtig wäre)

Und ich habe alle Fragen, die sich auf den gemeinsamen Namen / die Organisation beziehen, unter www.name.com beantwortet.

Dann öffnete ich die csr, kopierte sie, fügte sie in go daddy ein, lud sie herunter, entpackte sie, navigierte mit dem Terminal zu dem entpackten Ordner und gab sie ein:

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

Dann habe ich diese Anweisungen aus Probleme mit Google Apps Custom Domain SSL die waren:

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

genau wie bisher, nur dass ich statt privateKey.key name.unencrypted.priv.key und statt www_mydomain_com.crt name.crt verwendet habe

Dann habe ich die public.pem für das "PEM-codierte X.509-Zertifikat" in die Verwaltungskonsole hochgeladen und die private.pem für den "Unverschlüsselten PEM-codierten RSA-Privatschlüssel" hochgeladen.

.. Und das hat endlich funktioniert.

0 Stimmen

(godaddy), das hat bei mir funktioniert. 1. Ich habe das Zertifikat heruntergeladen, nachdem ich die erste Zeile für den Servertyp "Apache" verwendet habe. Dann habe ich die public.pem und private.pem für das ssl_certificate bzw. ssl_certificate_key in nginx.conf verwendet :)

6voto

stackprotector Punkte 6812

Unter Windows können Sie mit dem Befehl certutil Werkzeug:

certutil -encode server.crt cert.pem
certutil -encode server.key key.pem

Sie können beide Dateien in PowerShell wie folgt zu einer Datei kombinieren:

Get-Content cert.pem, key.pem | Set-Content cert-and-key.pem

Und in CMD so:

copy cert.pem+key.pem cert-and-key.pem /b

1 Stimmen

Es ist schön zu sehen, dass es nach all den Jahren immer noch Menschen gibt, die zu dieser Frage beitragen. OP

5voto

adityalad Punkte 131

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 sagt ( wiki-Definition ), dass die Datei mit BEGIN und END beginnen und enden soll.

.pem - (Privacy Enhanced Mail) Base64 kodiertes DER-Zertifikat, eingeschlossen zwischen "-----BEGIN CERTIFICATE-----" und "-----END CERTIFICATE-----"

Bei einigen Bibliotheken (die ich in Java gefunden habe), die ein striktes pem-Format erwarten, würde das erzeugte crt bei der Validierung als "ungültiges pem-Format" durchfallen.

Auch wenn Sie die Zeilen mit BEGIN/END CERTIFICATE kopieren oder ausfindig machen und in eine cert.pem-Datei einfügen, sollte es funktionieren.

Hier ist, was ich tun, nicht sehr sauber, aber funktioniert für mich, im Grunde filtert es den Text ab BEGIN Zeile:

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

1 Stimmen

Eine andere Möglichkeit besteht darin, das nicht-straffe Zertifikat einfach durch openssl x509 . Es wird ein gültiges PEM-Zertifikat ausgegeben: cat certificate.crt | openssl x509 > certificate.pem

0 Stimmen

Wenn Sie alles von "BEGIN" bis zum Ende der Datei erhalten wollen, ist das eine Aufgabe für sed. Genauer gesagt, wollen Sie etwas wie sed -n '/--BEGIN/,$p' cert.crt in diesem Fall. Um das zu erklären: das "-n" sagt sed, dass es standardmäßig nichts ausgibt, und dann der Bereichsausdruck /--BEGIN/,$ macht die p (print) gelten für Zeilen zwischen der ersten Zeile, in der --BEGIN und das Ende der Datei ( $ ).

4voto

Ashvin A Punkte 7293
  1. Laden Sie das Zertifikat vom vorläufigen Portal per appleId herunter,

  2. Exportieren Sie das Zertifikat aus der Schlüsselkette und geben Sie einen Namen an (Certificates.p12),

  3. Öffnen Sie das Terminal und wechseln Sie in den Ordner, in dem Sie die Datei Certificates.p12 gespeichert haben,

  4. 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

  5. Ihre .pem-Datei bereit "pushcert.pem".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X