Was sind die Unterschiede zwischen .pem, .cer und .der?

84

Was sind die Unterschiede zwischen .pem, .cerund .der?

Soweit ich weiß, .cerenthält öffentlichen Schlüssel. Gibt es offene Frameworks, mit denen ich meine Daten mit diesem öffentlichen Schlüssel verschlüsseln kann?

LiangWang
quelle
2
Ich denke, sie sind alle nur Dateiformate, in denen jeder Schlüssel gespeichert werden kann. Es gibt Werkzeuge, die frei zwischen ihnen konvertieren können.
IMSoP
1
@IMSoP Richtig, aber für .cer zu .der kann der cpBefehl tun :)
Maarten Bodewes
Ich habe den iOS-spezifischen Teil entfernt, es scheint viele Beispiele zu geben, wie dieses und dieses andere , das .pem verwendet.
Maarten Bodewes

Antworten:

88

.pem, .cerUnd .dersind alle Dateierweiterungen für Dateien , die ein X.509 v3 - Zertifikat enthalten.

Die .derErweiterung

DER ist die Methode zum Codieren der Daten, aus denen das Zertifikat besteht. DER selbst kann jede Art von Daten darstellen, beschreibt jedoch normalerweise ein verschlüsseltes Zertifikat oder einen CMS-Container.

Die Struktur eines Zertifikats wird in der ASN.1-Datendarstellungssprache beschrieben. BER und DER sind binäre Codierungsmethoden für Daten, die von ASN.1 beschrieben werden.

Die .pemErweiterung

PEM ist eine Methode zum Codieren von Binärdaten als Zeichenfolge (ASCII-Panzerung). Es enthält eine Kopf- und eine Fußzeile (die den zu codierenden Datentyp angibt und Anfang / Ende anzeigt, wenn die Daten miteinander verkettet sind), und die Daten in der Mitte sind die Basisdaten 64. In dem Fall, dass es ein Zertifikat codiert, würde es einfach die Basis-64-Codierung des DER-Zertifikats enthalten. PEM steht für Privacy Enhanced Mail. Mail darf keine nicht codierten Binärwerte wie DER direkt enthalten.

PEM kann auch andere Arten von Daten codieren / schützen, die sich auf Zertifikate beziehen, wie z. B. öffentliche / private Schlüssel, Zertifikatanforderungen usw. Wenn der Inhalt ein allgemeines X509v3-Zertifikat ist, wird die PEM wie folgt codiert:

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----

Beachten Sie, dass eine PEM-Datei auch eine vollständige Zertifikatkette enthalten kann, wobei die Kette mit dem Blatt- / Endzertifikat des Dienstes beginnt, gefolgt von dem Zertifikat, das sie signiert hat, normalerweise bis einschließlich des vertrauenswürdigen Stammzertifikats. Wenn Sie also Zertifikate vermissen, sollten Sie einen Blick hinter das erste werfen.

Die .ceroder .crtErweiterung

.cersteht nur für Zertifikat. Es handelt sich normalerweise um DER-codierte Daten, aber Windows akzeptiert möglicherweise auch PEM-codierte Daten. Sie müssen sich den Inhalt ansehen (z. B. mithilfe des fileDienstprogramms auf Posix-Systemen), um zu sehen, was sich in der Datei befindet, um 100% sicher zu sein.

Andere OpenSSL-Formate

In dieser Antwort finden Sie eine ausführlichere Liste der von OpenSSL unterstützten Funktionen.


Um den im Zertifikat enthaltenen öffentlichen Schlüssel zu verwenden (und durch die Signatur im Zertifikat signiert ), sollten Sie eine Bibliothek verwenden, die X.509-Zertifikate analysiert und eine RSA-Verschlüsselung durchführt. Sie können ein Tool verwenden, das die PEM-Codierung erkennt / verarbeitet, oder Sie können das Zertifikat zuerst in DER konvertieren, indem Sie die PEM-Codierung entfernen.

Die OpenSSL-Befehlszeile enthält viele Optionen zum Konvertieren zwischen PEM und DER, zum Ausdrucken von Zertifikatinformationen auf hoher Ebene oder zum Analysieren des ASN.1, um eine Ansicht auf niedriger Ebene zu erhalten.

Einzelheiten

Wie die meisten ASN.1-Strukturen beginnt das DER-codierte Zertifikat immer mit einem Byte, 30das die Tag-Codierung eines ASN.1 ist SEQUENCE. Wenn die Datei viele Wiederholungen enthält, ist dies in Ordnung. Es ist nur die Struktur , die streng definiert ist.

Ebenso beginnt die Basis 64 in einer PEM-codierten Datei immer mit dem Buchstaben, Mwährend ein ASN.1 SEQUENCEmit einem Byte beginnt. 30Die ersten 6 Bits sind also 001100, was in die Zahl 12 übersetzt wird, die der Index des Buchstabens Mist dreizehnter Buchstabe des Alphabets.

Maarten Bodewes
quelle