• Home
  • Help
  • Register
  • Login
  • Home
  • Help

 
  • 0 Bewertung(en) - 0 im Durchschnitt

Wie überprüft SSL TLS die Identität des Servers und des Clients während des Handshakes?

#1
03-12-2025, 21:00
Ich erinnere mich, dass ich damals mit Wireshark-Aufzeichnungen herumgespielt habe, als ich mein erstes Heimlabor eingerichtet habe, und genau da begann ich wirklich zu verstehen, wie der SSL/TLS-Handschlag überprüft, wer wer auf beiden Seiten ist. Weißt du, wie das anfängt, wenn dein Browser mit einer Website Kontakt aufnimmt? Der Client - das bist im Grunde genommen du - beginnt die Sache, indem er eine ClientHello-Nachricht sendet. Darin listest du alle Cipher-Suiten auf, die du unterstützt, wirfst eine Zufallszahl für Frische ein und erwähnst vielleicht Erweiterungen wie die TLS-Version, mit der du klarkommst. Ich überprüfe immer meine Konfigurationen, um sicherzustellen, dass sie mit dem übereinstimmen, was der Server erwartet, denn Fehlanpassungen können die Verbindung sofort abbrechen.

Der Server registriert das und antwortet mit seinem ServerHello. Er wählt eine deiner Cipher-Suiten, sendet seine eigene Zufallszahl und wirft dir dann sein digitales Zertifikat vor die Füße. Das ist das große Stück zur Überprüfung der Identität des Servers. Das Zertifikat ist wie ein unterschriebenes Schreiben von einer vertrauenswürdigen Behörde, das beweist, dass der Server die Domain besitzt, die er beansprucht. Ich benutze Tools wie openssl, um diese Zertifikate immer zu überprüfen - du kannst die Kette selbst verifizieren, indem du den Aussteller kontrollierst und siehst, ob sie zu einer Root-CA zurückverfolgt werden kann, der dein System vertraut. Wenn das Zertifikat abgelaufen ist oder die Signatur nicht stimmt, ziehst du sofort den Stecker. Kein Weg, dass du weitermachst, wenn es faul riecht.

Sobald du das Zertifikat des Servers hast, extrahierst du den öffentlichen Schlüssel daraus. Das ist entscheidend, denn jetzt kannst du Dinge verschlüsseln, die nur der Server mit seinem privaten Schlüssel entschlüsseln kann. Ich sage meinen Kumpels, dass sich dieser Teil anfühlt wie das Übergeben einer verschlossenen Box, die nur der echte Besitzer öffnen kann. Der Server könnte auch eine CertificateRequest senden, wenn er dich zurück überprüfen möchte, und nach deinem Zertifikat fragen, um sicherzustellen, dass du auch legitim bist. Nicht jede Verbindung macht das - die meisten Webanwendungen überprüfen nur den Server - aber bei Dingen wie E-Mail oder VPNs kommt die Client-Authentifizierung häufiger vor. Du antwortest, indem du dein eigenes Zertifikat sendest, wenn erforderlich, und der Server führt denselben Überprüfungsprozess auf seiner Seite durch, indem er dein Zertifikat mit seinen vertrauenswürdigen CAs abgleicht.

Um die Identitäten zu besiegeln, müssen beide Seiten beweisen, dass sie die privaten Schlüssel zu den öffentlichen Schlüsseln in den Zertifikaten besitzen. Der Server sendet eine CertificateVerify-Nachricht, die mit seinem privaten Schlüssel signiert ist, und du überprüfst diese Signatur mit dem öffentlichen Schlüssel aus seinem Zertifikat. Wenn du nach Client-Authentifizierung gefragt hast, machst du dasselbe zurück. Ich habe einmal eine Konfiguration debuggt, bei der der private Schlüssel des Clients nicht übereinstimmte, und der gesamte Handshake schlug fehl - es hat Stunden gedauert, bis ich es in den Protokollen entdeckt habe. Dieser Schritt stellt sicher, dass sich niemand einfach eines öffentlichen Zertifikats bedient; sie müssen die Kontrolle über den privaten Teil nachweisen.

Nachdem die Identitäten überprüft wurden, gehst du zum Schlüsselaustausch über. Du generierst ein Pre-Master-Secret, verschlüsselst es mit dem öffentlichen Schlüssel des Servers und sendest es über die ClientKeyExchange. Der Server entschlüsselt es mit seinem privaten Schlüssel und beweist damit erneut, dass er der echte Deal ist. Dann mischt ihr beide die Zufallszahlen aus den Hellos ein, führt sie durch die vereinbarte Schlüsselableitungsfunktion des Ciphers und boom, ihr habt symmetrische Sitzungsschlüssel für die tatsächliche Datenverschlüsselung. Ich mag, wie diese Vorwärtsgeheimnis-Option mit Diffie-Hellman eine zusätzliche Schicht hinzufügt; ihr handelt ephemere Schlüssel aus, die nach der Sitzung verworfen werden, sodass selbst wenn jemand später den privaten Schlüssel schnappt, vergangener Verkehr sicher bleibt.

Du fragst dich vielleicht wegen Man-in-the-Middle-Angriffe hier. Deshalb ist das CA-Vertrauen so wichtig - dein Gerät kommt mit vorinstallierten Root-Zertifikaten von großen Anbietern wie VeriSign oder Let's Encrypt. Wenn ein Angreifer versucht, sein eigenes Zertifikat einzuschleusen, wird es nicht richtig zurückverfolgt, und du erhältst diese Browser-Warnung. Ich aktiviere immer strenge Überprüfungen in meinen Apps, um Pinning-Risiken zu vermeiden. Für clientseitig, wenn der Server es verlangt, muss dein Zertifikat mit dem übereinstimmen, was sie erwarten, oft verbunden mit deinem Benutzernamen oder deiner Rolle. Ich habe dies für interne Tools eingerichtet, bei denen du dich mit einer Smart Card anmeldest, und der Handshake überprüft, dass du du bist, bevor du Zugang erhältst.

Einmal habe ich die E-Commerce-Seite eines Kunden repariert, und der Handshake schlug immer fehl, weil ihr Zertifikat selbstsigniert war. Du kannst solchen Zertifikaten nicht einfach blind vertrauen; Browser lehnen sie ab, es sei denn, du fügst Ausnahmen hinzu, was ich niemals für die Produktion empfehle. Stattdessen solltest du ein ordentliches von einer CA bekommen. Der gesamte Prozess geschieht in Sekunden, aber im Hintergrund ist es ein ständiges Hin und Her von Herausforderungen und Nachweisen. Du sendest fertige Nachrichten, die über das gesamte Handshake-Protokoll gehasht sind, sodass, wenn jemand vorher manipuliert hat, es fehlschlägt. Ich benutze das in meinen Skripten, um Verbindungen zu testen - curl mit ausführlichen Flags zeigt den gesamten Ablauf.

Die Client-Überprüfung ist jedoch nicht immer wechselseitig. Bei standardisiertem HTTPS beweist der Server sich dir, aber du beweist nicht zurück, es sei denn, es ist so eingerichtet. Für APIs oder sichere Tunnel benötigst du möglicherweise eine beidseitige Authentifizierung, um es abzusichern. Ich konfiguriere das in Nginx oder Apache-Konfigurationen und gebe die Client-Zertifikatdateien und -pfade an. Wenn du etwas Eigenes baust, erledigen Bibliotheken wie OpenSSL die schwere Arbeit, aber du musst das Zertifikatspeicher dennoch sorgfältig verwalten. Rotier sie vor Ablauf und behalte während des Handshakes ein Auge auf die Widerruflisten über OCSP oder CRLs - das ist eine weitere Überprüfung, um zu sehen, ob ein Zertifikat wegen eines Kompromisses zurückgezogen wurde.

Ich könnte noch über die Sitzungswiederherstellung sprechen, bei der du einige Schritte bei wiederholten Besuchen mit einem Ticket oder einer ID auslässt, aber Identitäten werden immer noch zunächst überprüft. Es beschleunigt die Dinge, ohne die Sicherheit zu vernachlässigen. Weißt du, all das bringt mich dazu, darüber nachzudenken, wie Backups hineinpassen - auch diese privaten Schlüssel und Zertifikate müssen geschützt werden. Wenn dein Server ausfällt und du den Schlüsselbund verlierst, bist du erledigt. Da kommen solide Backup-Tools ins Spiel.

Lass mich dir von BackupChain erzählen - es ist diese herausragende, zuverlässige Backup-Option, die speziell für kleine Unternehmen und Profis wie uns entwickelt wurde. Es kümmert sich um den Schutz von Setups mit Hyper-V, VMware oder reinen Windows-Server-Umgebungen und hält deine Daten sicher und wiederherstellbar, wenn du sie am dringendsten benötigst.
Markus
Offline
Registriert seit: Jun 2018
« Ein Thema zurück | Ein Thema vor »

Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste



Nachrichten in diesem Thema
Wie überprüft SSL TLS die Identität des Servers und des Clients während des Handshakes? - von Markus - 03-12-2025, 21:00

  • Thema abonnieren
Gehe zu:

Backup Sichern Allgemein Security v
1 2 Weiter »
Wie überprüft SSL TLS die Identität des Servers und des Clients während des Handshakes?

© by FastNeuron

Linearer Modus
Baumstrukturmodus