Frage Was ist eine PEM-Datei und wie unterscheidet sie sich von anderen OpenSSL-generierten Schlüssel-Dateiformaten?


Ich bin verantwortlich für die Wartung von zwei Debian-Servern. Jedes Mal, wenn ich etwas mit Sicherheitszertifikaten machen muss, google ich für Tutorials und schlage weg, bis es endlich klappt.

Bei meinen Recherchen stoße ich oft auf verschiedene Dateiformate (.key, .csr, .pem), aber ich konnte nie eine gute Erklärung dafür finden, was der Zweck jedes Dateiformats ist.

Ich habe mich gefragt, ob die guten Leute von ServerFault hier eine Klärung bringen könnten?


1173
2018-05-19 02:24


Ursprung


stackoverflow.com/a/45886431/1599699 - Andrew


Antworten:


SSL gibt es schon lange genug, man könnte meinen, dass es vereinbarte Containerformate geben würde. Und du hast recht, da sind sie. Zu viele Standards, wie es passiert. Das ist es, was ich weiß, und ich bin mir sicher, dass andere mitspielen werden.

  • .csr - Dies ist eine Zertifikatsignierungsanfrage. Einige Anwendungen können diese zur Übermittlung an die Zertifizierungsstellen generieren. Das tatsächliche Format ist PKCS10, das in definiert ist RFC 2986. Es enthält einige / alle wichtigen Details des angeforderten Zertifikats wie Betreff, Organisation, Status, Whatnot sowie die Öffentlicher Schlüssel des Zertifikats, um signiert zu werden. Diese werden von der Zertifizierungsstelle signiert und ein Zertifikat wird zurückgegeben. Das zurückgegebene Zertifikat ist öffentlich Zertifikat (der den öffentlichen Schlüssel, aber nicht den privaten Schlüssel enthält), der selbst in mehreren Formaten vorliegen kann.
  • .pem - Definiert in RFCs 1421 durch 1424Dies ist ein Containerformat, das nur das öffentliche Zertifikat (z. B. mit Apache-Installationen und CA-Zertifikatsdateien) enthalten kann /etc/ssl/certs) oder eine vollständige Zertifikatskette mit öffentlichen Schlüsseln, privaten Schlüsseln und Stammzertifikaten enthalten. Verwirrenderweise kann es auch eine CSR codieren (z. B. wie verwendet) Hier), da das PKCS10-Format in PEM übersetzt werden kann. Der Name kommt von Privacy Enhanced Mail (PEM), eine fehlgeschlagene Methode für sichere E-Mails, aber das verwendete Containerformat lebt weiter und ist eine base64-Übersetzung der x509 ASN.1-Schlüssel.
  • .Schlüssel - Dies ist eine PEM-formatierte Datei, die nur den privaten Schlüssel eines bestimmten Zertifikats enthält und lediglich ein konventioneller Name und kein standardisierter Name ist. In Apache-Installationen befindet sich dies häufig in /etc/ssl/private. Die Rechte für diese Dateien sind sehr wichtig, und einige Programme lehnen es ab, diese Zertifikate zu laden, wenn sie falsch eingestellt sind.
  • .pkcs12 .pfx .p12 - Ursprünglich von RSA in der Public-Key-Kryptographie-Standards (abgekürzt PKCS), die "12" Variante wurde ursprünglich von Microsoft erweitert und später als eingereicht RFC 7292. Dies ist ein passwortgeschütztes Containerformat, das sowohl öffentliche als auch private Zertifikatspaare enthält. Im Gegensatz zu PEM-Dateien ist dieser Container vollständig verschlüsselt. Openssl kann dies in eine .pem-Datei mit öffentlichen und privaten Schlüsseln umwandeln: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes 

Ein paar andere Formate, die von Zeit zu Zeit erscheinen:

  • .der - Eine Möglichkeit zum Verschlüsseln der ASN.1-Syntax in Binärdateien ist eine .pem-Datei, die nur eine Base64-codierte .der-Datei ist. OpenSSL kann diese in .pem umwandeln (openssl x509 -inform der -in to-convert.der -out converted.pem). Windows sieht diese als Zertifikatsdateien an. Standardmäßig exportiert Windows Zertifikate als .ER-formatierte Dateien mit einer anderen Erweiterung. Mögen...
  • .cert .cer .crt - Eine .pem (oder selten .der) formatierte Datei mit einer anderen Erweiterung, eine, die von Windows Explorer als Zertifikat erkannt wird, was .pem nicht ist.
  • .p7b .keystore - Definiert in RFC 2315 Als PKCS-Nummer 7 ist dies ein Format, das von Windows für den Austausch von Zertifikaten verwendet wird. Java versteht diese nativ und oft verwendet .keystore als Erweiterung stattdessen. Im Gegensatz zu .pem-Stil-Zertifikaten hat dieses Format a definiert Möglichkeit, Zertifizierungspfad-Zertifikate aufzunehmen.
  • .crl - Eine Zertifikatssperrliste. Zertifizierungsstellen erstellen diese, um Zertifikate vor dem Ablauf der Autorisierung zu deaktivieren. Sie können sie manchmal von CA-Websites herunterladen.

Zusammenfassend gibt es vier verschiedene Möglichkeiten, Zertifikate und ihre Komponenten zu präsentieren:

  • PEM - RFCs werden bevorzugt von Open-Source-Software verwendet. Es kann eine Vielzahl von Erweiterungen haben (.pem, .key, .cer, .cert, mehr)
  • PKCS7 - Ein offener Standard, der von Java verwendet und von Windows unterstützt wird. Enthält kein privates Schlüsselmaterial.
  • PKCS12 - Ein privater Microsoft-Standard, der später in einem RFC definiert wurde, der erweiterte Sicherheit gegenüber dem reinen Text-PEM-Format bietet. Dies kann privates Schlüsselmaterial enthalten. Es wird bevorzugt von Windows-Systemen verwendet und kann durch Verwendung von openssl frei in das PEM-Format konvertiert werden.
  • DER - Das übergeordnete Format von PEM. Es ist nützlich, es als eine binäre Version der Base64-codierten PEM-Datei zu betrachten. Wird außerhalb von Windows nicht routinemäßig verwendet.

Ich hoffe das hilft.


1449
2018-05-19 02:49



Das Tolle an Standards ist, dass es so viele gibt, aus denen man wählen kann ... - squillman
.crt ist eine weitere gebräuchliche Erweiterung für .cert und .cer - David Pashley
PEM ist ein Dateiformat, das aus einem Zertifikat (auch öffentlicher Schlüssel), einem privaten Schlüssel oder auch beiden verketteten Dateien bestehen kann. Achten Sie nicht so sehr auf die Dateiendung; Es bedeutet Privacy Enhanced Mail, eine Anwendung, für die es nicht viel zu verwenden, aber das Dateiformat fest. - Dan Carley
Sehr nützliche Antwort, aber ich glaube nicht, dass Sie das von ssh-keygen. Es wäre nützlich zu wissen, wie das mit dem Rest zusammenhängt. - Jez
Kann nicht helfen zu bemerken, "Privacy Enhanced Email" würde das Akronym "PEE" im Gegensatz zu "PEM" geben. Die RFCs neigen dazu, den Ausdruck "Privacy Enhanced Mail" zu verwenden. - aidan


PEM selbst ist kein Zertifikat, es ist nur eine Möglichkeit, Daten zu verschlüsseln. X.509-Zertifikate sind eine Art von Daten, die häufig mithilfe von PEM codiert werden.

PEM ist ein X.509-Zertifikat (dessen Struktur mit ASN.1 definiert ist), das mit den ASN.1 DER codiert wird (distinguierte Kodierungsregeln), dann durch Base64-Kodierung und zwischen Klartext-Ankerlinien (BEGIN CERTIFICATE und END CERTIFICATE) ).

Sie können die gleichen Daten mit den PKCS # 7- oder PKCS # 12-Darstellungen darstellen, und dazu kann das Befehlszeilendienstprogramm openssl verwendet werden.

Die offensichtlichen Vorteile von PEM bestehen darin, dass es sicher in den Körper einer E-Mail-Nachricht eingefügt werden kann, da es über Ankerlinien verfügt und 7-Bit sauber ist.

RFC1422 enthält weitere Details zum PEM-Standard bezüglich Schlüsseln und Zertifikaten.


123
2018-06-06 15:19



Wie machst du das "mit der OpenSSL-Befehlszeile"? - Samik R
So konvertieren Sie eine DER-Datei (.crt .cer .der) in PEM: openssl x509 -inform der -in cert.cer -out cert.pem. So konvertieren Sie eine PEM-Datei in DER: openssl x509 -outform der -in cert.pem -out certi.der. So konvertieren Sie eine PKCS # 12-Datei (.pfx .p12) mit einem privaten Schlüssel und Zertifikaten in PEM: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes. So konvertieren Sie eine PEM-Zertifikatsdatei und einen privaten Schlüssel in PKCS # 12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt Von Hier - mpeac


Manchmal a .crt Datei ist bereits ein .pem. Sehen: https://stackoverflow.com/questions/991758/openssl-pem-key


51
2018-03-15 00:24



In der Tat, ich habe es gerade heute bemerkt. Ich musste ein PEM-Zertifikat in Rackspace Loadbalancer eingeben und ich fragte mich, ob der generierte CRT in diesem Format war. Aber es funktionierte so, das war auch meine Schlussfolgerung, die meisten dieser .crt's kommen im PEM-Format, wie es scheint. - Glenn Plas