Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-wiki:ssl:allgemeines_zu_zertifikaten

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
it-wiki:ssl:allgemeines_zu_zertifikaten [2024/03/15 08:44] – angelegt markoit-wiki:ssl:allgemeines_zu_zertifikaten [2024/03/18 08:21] (aktuell) – [Fazit] marko
Zeile 26: Zeile 26:
   * AES_128_GCM Ist der Bulk-Verschlüsselungsmechanismus (also die Verschlüsselung der Daten).   * AES_128_GCM Ist der Bulk-Verschlüsselungsmechanismus (also die Verschlüsselung der Daten).
   * SHA256 ist der Hashing Algorithmus.   * SHA256 ist der Hashing Algorithmus.
 +
 +==== X.509 ====
 +X.509 ist ein Standard für eine Public-Key-Infrastruktur zur Erstellung digitaler Zertifikate. X.509 Zertifikate finden Anwendung bei TLS-Versionen verschiedener Übertragungsprotokolle (HTTPS, S/MIME).
 +
 +===== Für was braucht es Zertifakte? =====
 +Zertifikate sind einerseits dazu da, sich um die Identifizierung von Benutzern oder Clients zu kümmern, und zusätzlich sind sie dafür verantwortlich, diese Kommunikation zu verschlüsseln. Man unterscheidet dabei zwischen zwei Arten von Zertifikaten; dem Client-Zertifikat (auch PKI) und dem Serverzertifikat (auch SSL-Zertifikat).
 +
 +===== Verschlüsselung =====
 +Es gibt mehrere Wege, wie man Informationen verschlüsseln kann. Das einfachste ist, die Nachricht mit einem Schlüssel zu verschlüsseln und diese an den Empfänger zu schicken. Da dem Empfänger der gleiche Schlüssel vorliegt, kann er diese Nachricht wieder entschlüsseln.
 +
 +Im Netz ist diese Methode aber nicht wirklich anwendbar, denn sonst müsste man von jeder Webseite, mit der man sicher kommunizieren möchte, den Schlüssel kennen. Dies ist natürlich nicht möglich, denn man könnte den Schlüssel nur auf unverschlüsseltem Weg erhalten. Aus diesem Grund gibt es das Public-Key-Verfahren. Damit dieses Verfahren funktionieren kann, braucht es aber erstmals eine Infrastruktur.
 +
 +===== Public Key Infrastructure =====
 +Wir alle haben im Zuge von Zertifikaten schon von PKI, oder Public Key Infrastructure gehört. Als PKI bezeichnet man in der Kryptologie ein System, welches digitale Zertifikate ausstellen, verteilen und prüfen kann. Die wichtigsten Bestandteile einer PKI sind:
 +
 +  * Zertifizierungsstelle (Certificate Authority, CA)
 +  * Registrierungsstelle (Registration Authority, RA)
 +  * Validierungsdienst (Valdiation Authority, VA)
 +  * X.509 Digitale Zertifikate
 +  * Verzeichnisdienste für Zertifikate
 +  * Zertifikatssperrlisten
 +
 +Die Funktionsweise einer PKI ist nun folgende:
 +{{ :it-wiki:ssl:public-key-infrastructure.jpg?nolink |}}
 +
 +===== Chain of Trust (Vertrauenskette) =====
 +Schauen wir uns an, wie in der Praxis mit einer PKI gearbeitet wird. Das höchste Gut einer PKI ist die Root-CA (Root Certificate Authority). Diese dient als “Vertrauensanker” und muss besonders geschützt werden. Wird die Root-CA gehackt, so ist die gesamte PKI nicht mehr vertrauenswürdig und alle von ihr ausgestellten Zertifikate müssen widerrufen werden. Aus diesem Grund haben auch nur wenige Personen Zugriff auf die Root-CA, welche übrigens NUR offline gehalten werden darf.
 +
 +Aus diesem Grund gibt es CA-Hierarchien. Schauen wir uns an, welche CA’s es in dieser Hierarchie gibt.
 +
 +===== Root-Zertifikate =====
 +Das Herzstück einer PKI. Jede CA hat nur wenige Root-Zertifikate. Der Public Key eines Root-Zertifikats wird beispielsweise auch im Browser hinterlegt, damit allen von der Root-CA ausgestellten Zertifikaten vertraut wird (Chrome CA’s).
 +
 +===== Intermediate-Zertifikate =====
 +Ein Intermediate-Zertifkat (dt. Zwischenzertifikat) wird von einem Root-Zertifikat ausgestellt. Nachdem das Intermediate-Zertifkat durch das Root-Zertifikat signiert wurde, wird das Root Zertifikat zum Ausstellen weiterer Zertifikate nicht mehr gebraucht.
 +
 +===== Serverzertifikate =====
 +Dieses Zertifikat wird von einem Intermediate-Zertifkat signiert. Es wird spezifisch für einen Benutzer oder Domainnamen ausgestellt.
 +
 +Serverzertifikate werden zur Authentifizierung eines Servers genutzt. Ein SSL/TLS-Zertifikat (oder Serverzertifikat, wir nennen es einfachheitshalber im folgenden nur SSL-Zertifikat) ist auch die Basis für eine verschlüsselte Kommunikation mit einer Webseite. So werden beispielsweise Phishing-Attacken (Vortäuschen einer falschen Identität) verhindert.
 +
 +Der Name SSL-Zertifikat ist in diesem Kontext irreführend. Anhand des Namens könnte man denken, dass die Zertifikate an ein bestimmtes Protokoll gebunden sind, was aber nicht der Fall ist. Vielmehr wird ein Zertifikat nur für die Umsetzung von SSL bzw. TSL verwendet.
 +
 +===== Aufbau eines SSL-Zertifikats =====
 +Ein SSL-Zertifikat enthält unter anderem die folgenden Informationen:
 +
 +  * Eindeutige Seriennummer
 +  * Inhaber des Zertifikats (Unternehmen)
 +  * Zertifizierte Domain
 +  * Gültigkeit
 +  * Verwendete Algorithmen
 +  * Aussteller (CA = Certificate Authority)
 +  * Signatur der CA
 +  * Fingerabdruck
 +  * Öffentlicher Schlüssel
 +
 +===== Funktion SSL =====
 +Um eine sichere Verbindung aufzubauen, wird ein SSL/TLS-Handshake durchgeführt. Wir schauen uns das am Beispiel einer HTTPS-Verbindung eines Browsers mit einem Server an.
 +
 +Nehmen wir an, du rufst die Seite b-nova.com auf.
 +\\
 +
 +{{ :it-wiki:ssl:ssl_authentication_handshake_messages.jpg?nolink |}}
 +  - Browser und Server sagen “hello” und einigen sich auf die Cipher Suite, welche für die Verschlüsselung genutzt werden soll.
 +  - Der Server sendet sein SSL-Zertifikat (Public Key inkludiert) zum Browser.
 +  - Der Browser überprüft das SSL-Zertifikat anhand des im Browser hinterlegten Root Zertifikats. Ist diese Überprüfung in Ordnung, erstellt der Browser einen Session Key und verschlüsselt diesen mit dem Public Key des Servers und schickt diesen anschliessend wieder zum Server zurück.
 +  - Der Server entschlüsselt den Session Key mit seinem Private Key. Ist diese Entschlüsselung erfolgreich, so ist der Handshake abgeschlossen. Bis zu diesem Zeitpunkt fand die asymmetrische Verschlüsselung statt, da Server und Browser ihre Nachrichten mit verschiedenen Schlüsseln ver- und entschüsseln.
 +  - Ab diesem Zeitpunkt kommunizieren Browser und Server nur noch über den Session Key, welcher symmetrisch verschlüsselt wird.
 +
 +===== Clientzertifikate =====
 +Ein Clientzertifikat dient zur Authentifizierung eines Benutzers oder “Clients”. Es dient allerdings nicht der Verschlüsselung der Kommunikation. Aus diesem Grund macht ein Clientzertifikat nur Sinn beim gleichzeitigen Einsatz eines Serverzertifikats, da dieses die Daten verschlüsselt. Clientzertifikate basieren, wie auch Serverzertifikate auf PKI.
 +
 +Wenn man ein Clientzertifikat einsetzen will, so fordert der Server das Zertifikat als zusätzlichen Schritt beim Client an. Der Client schickt das Zertifikat mit und prüft dies gegen das bei ihm hinterlegte Ausstellerzertifikat.
 +
 +{{ :it-wiki:ssl:ssl_authentication_handshake_messages2.jpg?nolink |}}
 +
 +Wir sehen in der Grafik, dass der Server ein “Certificate Request” macht. Damit fordert er vom Client das Clientzertifikat an. Beim Server selbst ist dann das Gegenstück dazu hinterlegt, damit er den Client authentifizieren kann.
 +
 +===== Fazit =====
 +Hoffentlich konnte ich dir nun etwas näherbringen, wie Zertifikate im Allgemeinen funktionieren, und was Server- und Clientzertifikate ausmacht.
it-wiki/ssl/allgemeines_zu_zertifikaten.1710492280.txt.gz · Zuletzt geändert: 2024/03/15 08:44 von marko