Ich bin für die Wartung von zwei Debian-Servern verantwortlich. Jedes Mal, wenn ich etwas mit Sicherheitszertifikaten machen muss, google ich nach Anleitungen und klopfe so lange, bis es endlich funktioniert.
Allerdings stoße ich bei meinen Recherchen oft auf verschiedene Dateiformate (.key
, .csr
, .pem
), aber ich habe nie eine gute Erklärung gefunden, was der Zweck jedes Dateiformats ist.
Ich habe mich gefragt, ob die guten Leute hier bei ServerFault etwas Klarheit in dieser Angelegenheit schaffen könnten?
SSL gibt es schon so lange, dass man meinen könnte, es gäbe vereinbarte Containerformate. Und Sie haben recht, es gibt sie. Zu viele Standards, wie es scheint. Das ist also das, was ich weiß, und ich bin sicher, dass andere sich dazu äußern werden.
/etc/ssl/certs
) oder eine ganze Zertifikatskette mit öffentlichem Schlüssel, privatem Schlüssel und Root-Zertifikaten enthalten kann. Verwirrenderweise kann es auch einen CSR kodieren (z.B. wie hier verwendet), da das PKCS10-Format in PEM übersetzt werden kann. Der Name stammt von [Privacy Enhanced Mail (PEM)] (https://en.wikipedia.org/wiki/Privacy-enhanced_Electronic_Mail), einer gescheiterten Methode für sichere E-Mails, aber das verwendete Containerformat lebt weiter und ist eine base64-Übersetzung der x509 ASN.1-Schlüssel./etc/ssl/private
. Die Rechte an diesen Dateien sind sehr wichtig, und einige Programme weigern sich, diese Zertifikate zu laden, wenn sie falsch gesetzt sind.Ein paar andere Formate, die von Zeit zu Zeit auftauchen:
openssl x509 -inform der -in to-convert.der -out converted.pem
). Windows sieht diese Dateien als Zertifikatsdateien. Standardmäßig exportiert Windows Zertifikate als .DER-formatierte Dateien mit einer anderen Erweiterung. Zum Beispiel....keystore
. Im Gegensatz zu Zertifikaten im .pem-Stil hat dieses Format eine definierte Möglichkeit, Zertifikate mit Zertifizierungspfad einzuschließen.Zusammenfassend kann man sagen, dass es vier verschiedene Möglichkeiten gibt, Zertifikate und ihre Komponenten darzustellen:
Ich hoffe, das hilft.
PEM ist für sich genommen kein Zertifikat, sondern nur eine Art der Datenkodierung. X.509-Zertifikate sind eine Art von Daten, die üblicherweise mit PEM kodiert werden.
PEM ist ein X.509-Zertifikat (dessen Struktur mit ASN.1 definiert ist), das mit ASN.1 DER (Distinguished Encoding Rules) kodiert, dann mit Base64 kodiert und zwischen Klartext-Ankerzeilen (BEGIN CERTIFICATE und END CERTIFICATE) eingefügt wird.
Sie können dieselben Daten auch in der PKCS#7- oder PKCS#12-Darstellung darstellen, wozu das Befehlszeilenprogramm openssl verwendet werden kann.
Der offensichtliche Vorteil von PEM besteht darin, dass es sicher in den Textkörper einer E-Mail-Nachricht eingefügt werden kann, da es Ankerzeilen hat und 7-Bit sauber ist.
In [RFC1422] (https://tools.ietf.org/html/rfc1422) finden Sie weitere Einzelheiten über den PEM-Standard in Bezug auf Schlüssel und Zertifikate.
Manchmal ist eine .crt
-Datei bereits eine .pem
. Siehe: https://stackoverflow.com/questions/991758/openssl-pem-key