Zertifikate (Überblick)
Ein Zertifikat ist eine Bestätigung oder ein Zeugnis - ein Dokument, das im Wesentlichen Folgendes aussagt:
"Wir, die Zertifizierungsstelle (CA), haben überprüft und bestätigen, dass der Betreff "CommonName" tatsächlich das ist, was er vorgibt zu sein. Diese Bestätigung ist gültig seit (Datum) bis (Datum)."
Einige Bestandteile des X.509-Zertifikats sind:
- ein Paar kryptografischer Schlüssel (einer davon, der öffentliche, ist Teil des Zertifikats), die sicherstellen, dass die vorgelegte Forderung nicht gefälscht wurde;
- einige Informationen über das Subjekt (abhängig vom Zweck des Zertifikats);
- der "Fingerabdruck" - eine Identifizierung des Zertifikats;
- die Seriennummer des Zertifikats;
- die beim Aussteller (CA) geführte CRL-Liste (mit den Seriennummern der Zertifikate), aus der hervorgeht, ob das Zertifikat noch gültig ist oder nicht (d. h. ob es widerrufen wurde oder nicht).
Der Inhalt des Zertifikats kann auf einem Computer als Daten in einer Datenbank (z. B. Windows Registry) oder als Datei gespeichert werden.
Wie man ein persönliches (Kunden-)Zertifikat erhält
Erzeugen Sie eine "Zertifikatsanforderung" und einen "privaten Schlüssel" auf einem Computer (vorzugsweise auf Ihrem eigenen Computer).
- Je nach Zweck können bestimmte Daten mit dem privaten Schlüssel verschlüsselt und mit dem öffentlichen Schlüssel entschlüsselt werden, oder umgekehrt. Der private Schlüssel sollte jedoch immer dort verbleiben, wo er erzeugt wurde.
Verschiedene kryptografische Programme oder einige Webbrowser können verwendet werden, um diese beiden Elemente zu erzeugen. Am bequemsten ist es, das Zertifikat mit einem Browser abzurufen und in der Regel bei einem einzigen Besuch der Website der Zertifizierungsstelle zu installieren (z. B. CAcert Web of Trust-Website). Gegenwärtig haben die Autoren der bekanntesten Browser (Firefox, Chrome, IE, Edge, Opera, Safari, Maxthon) diese Möglichkeit jedoch angeblich aus Sicherheitsgründen entfernt.
- Neben den Browsern gibt es auch andere kryptografische Programme mit grafischer oder Befehlszeilenschnittstelle, die den privaten Schlüssel und die Zertifikatsanforderung erzeugen können. Allerdings müssen Sie die Zertifikatsanforderungsdatei (CSR) in das Base64-Textformat umwandeln und manuell bei der Zertifizierungsstelle einreichen (z. B. auf der Website CAcert Web of Trust).
Weitere Informationen zur Zertifikatsanforderung finden Sie unter CSR und Erstellen einer Zertifikatsanforderung mit OpenSSL.
Vom Befehlszeilen-Verschlüsselungsprogramm (z. B. openssl) erzeugte Dateien
Wenn Sie eine Befehlszeile für openSSL oder ein ähnliches Programm verwenden und den Namen des resultierenden Produkts eingeben, erhalten Sie normalerweise diese beiden wichtigsten Dateien:
<Name>.key
Dies ist Ihr privater Schlüssel. Sie sollten diesen Schlüssel nur auf dem Computer aufbewahren, auf dem und für den er erstellt wurde. (Mit Ausnahme der Sicherung des Schlüssels und des Zertifikats, siehe unten.)KEINE Zertifizierungsstelle benötigt/verlangt diese Datei oder den darin enthaltenen Schlüssel!
- Das Versenden einer E-Mail an eine zuständige Behörde ist dasselbe wie das Versenden der PIN Ihrer Kreditkarte an jemanden.
<Name> .csr
Dies ist Ihre Zertifikatsanforderung und enthält Ihren aktuell erzeugten öffentlichen Schlüssel.Diese Datei muss in die richtige Zeichen (PEM) Form konvertiert werden und dann an die CA übermittelt werden.
- Das bedeutet (bei CAcert): Aktivieren Sie das Kontrollkästchen "Erweiterte Optionen". Fügen Sie den Inhalt der Datei auf der CAcert-Webseite "Neu" ein und markieren Sie zusätzliche Optionen, die Sie benötigen (z. B. E-Mail-Adresse, Ihren Namen, die Möglichkeit, Dokumente und/oder Dateien zu signieren). CAcert erstellt dann Ihr neues Zertifikat und bietet Ihnen an, es herunterzuladen/zu installieren.
Hinweis 1: Die Dateierweiterungen .key und .csr dienen nur als Referenz - andere Zertifikatserstellungsprogramme können andere Erweiterungen verwenden!
Hinweis 2: Die Zertifikatsanforderungsdatei kann im P10-Format mit der Erweiterung .p10 erstellt werden. In diesem Fall kann der Inhalt binär sein und muss in das PEM-Zeichenformat (Base64) konvertiert werden.
So bearbeiten Sie einen binären Zertifikatsantrag in einer Form, die für die Übermittlung an CAcert geeignet ist
Verwenden Sie eine beliebige Website, die es Ihnen ermöglicht, eine Binärdatei zu lesen und in Base64 zu kodieren. Zum Beispiel: https://base64.guru/converter/encode/file. Fügen Sie die Identifikationszeilen BEGIN und END am Anfang und Ende der Datei ein, wie im folgenden Beispiel gezeigt:
-----BEGIN NEW CERTIFICATE REQUEST----- MIIEHzCCAwcCAQAwVzELMAkGA1UECwwCSVQxDjAMBgNVBAoMBUFMS0FTMRIwEAYD VQQHDAlTb2tvbG5pY2UxCzAJBgNVBAYTAkNaMRcwFQYDVQQDDA5tYWlsLmFsa2Fz ... ... andere Zeilen des Zertifikatsantrags, kodiert in Base64 ... 6UMLNsXu8F7ZEU+LP1oyiWSBAO/LqLuqMlc5KvRRyVENJMpPlNYJdL2YRcLTzF9+ F6CC -----END NEW CERTIFICATE REQUEST-----
So sichern Sie ein Zertifikat mit einem privaten Schlüssel
Das Sicherungsprogramm kann sein:
- ein Befehlszeilenprogramm (wie openSSL)
- ein Betriebssystemprogramm (wie MMC)
- Ein anderes kryptografisches Programm (wie XCA)
- Browser mit Zertifikatsverwaltung (Firefox, Chrome, ...)
Siehe Tutorials für eine detaillierte Beschreibung. Export (Backup) erstellt eine P12-Datei mit der Endung .p12 oder .pfx und mit den folgenden Hauptbestandteilen:
- Zertifikat
- Der entsprechende private Schlüssel
Daher muss die Sicherung auf dem Computer erfolgen, der den privaten Schlüssel enthält, d. h. auf dem die Zertifikatsanforderung generiert wurde, oder auf dem das Zertifikat und der private Schlüssel aus einer Sicherungsdatei (.p12 oder .pfx) wiederhergestellt wurden.
Wie die gesicherten Überweisungen funktionieren
Verwendung eines Zertifikats zum Verschlüsseln und Entschlüsseln von E-Mail-Nachrichten
Stellen wir uns vor, dass Alice eine Nachricht an Bob senden möchte, die so verschlüsselt werden soll, dass kein Unbefugter sie auf dem Weg durch das Internet abfangen und entschlüsseln kann. Alice benötigt Bobs öffentlichen Schlüssel, der Teil seines Client-Zertifikats ist; sie braucht also sein persönliches (Client-)Zertifikat. Dann verschlüsselt sie ihre Nachricht mit Bobs öffentlichem Schlüssel. Da das RSA-Verschlüsselungs-/Entschlüsselungssystem ein asymmetrisches System ist, kann nur die Person, die den komplementären privaten Schlüssel besitzt, die Nachricht entschlüsseln, und das sollte nur Bob selbst sein.
Verwendung eines Zertifikats zum Nachweis der Authentizität
Stellen wir uns nun vor, dass Bob der Autor einer Nachricht/eines Dokuments/eines Codes ist. Er möchte jedem Empfänger seiner Arbeit die Möglichkeit geben, zu überprüfen, ob die Nachricht/das Dokument/der Code tatsächlich Bobs Arbeit ist und ob sie unverändert bleibt. Bob muss also seine Arbeit mit seiner digitalen Signatur versehen (mit anderen Worten: er muss seine Nachricht/das Dokument/die Codes signieren). Außerdem muss er sein Zertifikat (das seinen öffentlichen Schlüssel enthält) anhängen. Bobs digitale Signatur wird auf seiner (des Absenders) Seite erstellt, indem er einen Hash der Nachricht/des Dokuments/des Codes erstellt und diesen Hash dann mit Bobs privatem Schlüssel verschlüsselt. Nun kann jeder Empfänger seinen eigenen Hash der Arbeit von Bob erstellen, dann Bobs Unterschrift entschlüsseln, was zu dem früheren Hash führt, und die beiden vergleichen. Wenn sie gleich sind, ist das der Beweis, dass der Autor des Werks tatsächlich Bob ist und dass das Werk auf seinem Weg durch das Internet nicht manipuliert wurde.
In beiden Beispielen wird die "harte Arbeit" mit Hashing, Verschlüsselung und Entschlüsselung normalerweise von Computerprogrammen erledigt. Der Hash-Algorithmus muss sehr genau sein, um unvorhersehbare Hashes zu erzeugen. Dies wird in erster Linie durch die Verwendung effizienter Zufallszahlengeneratoren (RNGs) erreicht.
Verwendung von Zertifikaten beim sicheren Webbrowsing
Der Grundtyp einer HTTPS-Verbindung (HTTP über SSL/TLS, "S" für "gesichert") ist der Austausch von verschlüsselten Nachrichten des Typs Anfrage (GET/POST) - Antwort. Der Austausch findet zwischen einem Client (Browser) und einem Webserver statt. Er läuft in etwa wie folgt ab:
- Es wird geprüft, ob das Serverzertifikat von einer vertrauenswürdigen CA stammt (Warnung oder Blockierung, falls nicht).
- Sowohl auf der Client- als auch auf der Serverseite werden zwei Schlüsselpaare generiert, und es werden öffentliche Schlüssel ausgetauscht. Alle Schlüssel, auf die im nächsten Absatz Bezug genommen wird, sind nur die hier erzeugten.
- Der Client verschlüsselt seine Anfrage oder Formulardaten (mit dem öffentlichen Schlüssel des Servers), dann entschlüsselt der Server die Anfrage (mit seinem privaten Schlüssel), bereitet einen oder mehrere Teile seiner Antwort vor, verschlüsselt sie (mit dem öffentlichen Schlüssel des Clients) und sendet die Antwort. Der Kunde entschlüsselt die Antwort (mit seinem privaten Schlüssel). Wenn die Kommunikation länger dauert, kann jeder Teil den "Chiffrierwechsel" einleiten, d. h. ein neues Schlüsselpaar erstellen und erneut öffentliche Schlüssel austauschen. Da dieser Austausch bereits verschlüsselt ist, ist dieser Vorgang einfacher als der erste Start der Kommunikation.
Die ganze "harte Arbeit" wird wieder von Computerprogrammen erledigt - dem Client (Browser) und dem Server.
Verwendung von Zertifikaten in der sicheren E-Mail-Kommunikation (TLS)
Die Verbindung erfolgt in der Regel über Port 25, nachdem überprüft wurde, dass beide Seiten das TLS-Protokoll unterstützen - heutzutage meist TLS 1.2 (RFC 5246) oder TLS 1.3 (RFC 8446). Die Verbindung wird von der sendenden Seite (normalerweise ein Client) mit dem SMTP-Befehl STARTTLS gestartet.
Bei TLS 1.2 wird versucht, eine verschlüsselte Verbindung aufzubauen, auch wenn einige der übertragenden Partner nicht über ein Zertifikat verfügen, das von einer der anderen Partei bekannten Zertifizierungsstelle ausgestellt wurde - es reicht aus, dass der Host über einen privaten Schlüssel zu seinem Zertifikat verfügt. Die Verbindung kann sogar dann verschlüsselt werden, wenn das Client-Zertifikat überhaupt nicht existiert.
Das Verfahren ist ähnlich wie beim sicheren Surfen im Internet: Erzeugung und Austausch von Verschlüsselungsschlüsseln, die nur für eine bestimmte Verbindung verwendet werden, dann Austausch von verschlüsselten Nachrichten mit der Möglichkeit, die Schlüssel während der Verbindung zu ändern.
Die TLS 1.3-Konnektivität wird unter anderem dadurch verbessert, dass sie schneller aufgebaut werden kann, wenn sich die Serverseite an die Parameter einer früheren Verbindung mit dieser speziellen Client-Seite erinnert.
Verschiedene Arten von X.509-Zertifikaten (English)
- Andere
Wie stark sind X.509-Zertifikate, die ich von CAcert erhalten kann?
Sicherheit ist ein ernstes und wichtiges Konzept. Deshalb variieren die Stärke und andere Eigenschaften der Zertifikate, die Sie von CAcert erhalten können, je nach dem Grad Ihrer Vertrauenswürdigkeit, der durch die Assurance Points (APs) gemessen wird. APs erhalten Sie durch sich versichern lassen, d.h. Sie weisen sich mit Ihren persönlichen Dokumenten aus, die Sie einem oder mehreren CAcert-Assurern vorlegen. Die Fähigkeiten Ihrer CAcert-Zertifikate hängen von der Gesamtzahl der erworbenen APs ab, wie in diesem Artikel beschrieben:
Wie vertrauenswürdig ist das CAcert selbst?
Die Vertrauenswürdigkeit von CAcert ergibt sich aus der Art und Weise, wie CAcert Zertifikatsantragsteller verifiziert assurance issues, und wie gut CAcert die privaten Schlüssel seiner Stammzertifikate gegen Missbrauch schützt. Heutzutage (2016) werden zwei CAcert-Root-Zertifikate verwendet:
CAcert Klasse 1 Stammzertifikat
ist das Primärzertifikat der höchsten Stufe. Als solches muss es selbstsigniert sein. Es wird mit dem Algorithmus SHA256 signiert. Wenn Sie der Behörde CAcert Ihr Vertrauen aussprechen, bedeutet dies, dass Sie dem öffentlichen und privaten Schlüssel der primären Wurzel vertrauen (der öffentliche Schlüssel ist im Wurzelzertifikat der Klasse 1 von CAcert enthalten), so dass der Signieralgorithmus des Wurzelzertifikats selbst keine Rolle spielt. Dies ist bei allen aufeinanderfolgenden (und untergeordneten) Zertifikaten anders, auch bei den auf Sie ausgestellten. Hier wird der Algorithmus SHA-256 verwendet, der heutzutage allgemein als sicher gilt.
Jedes ausgestellte Zertifikat kann mit dem Wurzelzertifikat der Klasse 1 signiert werden.
Seit 20170101 verlangen jedoch die neuen Versionen der gängigen Browser (IE, Edge, Firefox, Chrome, Opera usw.), dass ALLE Zertifikate, einschließlich der CA-Root-Zertifikate, mit dem SHA-256-Algorithmus signiert werden. Eine solche SHA-256-signierte Version des CAcert-Root-Zertifikats existiert bereits (siehe Wiki FAQ), und es wird daher empfohlen, das vorhandene MD-5-signierte Root-Zertifikat durch dieses zu ersetzen. Alle wichtigen Daten, einschließlich des öffentlichen Schlüssels des CAcert-Stammzertifikats, bleiben unverändert. The replacing procedure is described here.
Zwischenzertifikat der Klasse 3
ist das Signierzertifikat der zweiten Ebene. Es wird durch das Wurzelzertifikat der Klasse 1 signiert. Der Kontrollhash wird mit dem Algorithmus SHA-256 erstellt.
Jedes Zertifikat, das für Mitglieder der CAcert-Community mit mindestens 50 APs ausgestellt wird, kann mit dem Root-Zertifikat (Zwischenzertifikat) der Klasse 3 signiert werden.
Für Details zu den beiden CAcert-Root-Zertifikaten lesen Sie bitte diesen Artikel:
Die privaten Schlüssel der beiden Stammzertifikate werden von CAcert so gespeichert, dass sie vom Internet aus nicht zugänglich sind.
Die technischen Einzelheiten zu den ausgestellten Zertifikaten entnehmen Sie bitte der im folgenden Artikel genannten Richtlinie: