Wie werden SSL-Zertifikate verifiziert?

Welche Schritte sind erforderlich, um ein SSL-Zertifikat sicher zu überprüfen? Mein (sehr begrenztes) Verständnis besteht darin, dass der Server beim Besuch einer https-Site ein Zertifikat an den Client (den Browser) sendet und der Browser die Ausstellerinformationen des Zertifikats von diesem Zertifikat abruft, um dann den Aussteller zu kontaktieren und irgendwie zu vergleichen Zertifikate für die Gültigkeit.

  • Wie genau wird das gemacht?
  • Was ist mit dem process macht es immun gegen Man-in-the-Middle-Attacken?
  • Was verhindert, dass irgendeine zufällige Person ihren eigenen Verifizierungsservice für Man-in-the-Middle-Angriffe einrichtet, sodass alles “sicher” aussieht?

Solutions Collecting From Web of "Wie werden SSL-Zertifikate verifiziert?"

Hier ist eine sehr vereinfachte Erklärung:

  1. Ihr Webbrowser lädt das Zertifikat des Webservers herunter, das den öffentlichen Schlüssel des Webservers enthält. Dieses Zertifikat wird mit dem privaten Schlüssel einer vertrauenswürdigen Zertifizierungsstelle signiert.

  2. Ihr Webbrowser wird mit den öffentlichen Schlüsseln aller wichtigen Zertifizierungsstellen installiert. Mit diesem öffentlichen Schlüssel wird überprüft, ob das Zertifikat des Webservers tatsächlich von der vertrauenswürdigen Zertifizierungsstelle signiert wurde.

  3. Das Zertifikat enthält den Domainnamen und / oder die IP-Adresse des Webservers. Ihr Webbrowser bestätigt mit der Zertifizierungsstelle, dass die im Zertifikat angegebene Adresse diejenige ist, zu der er eine offene Verbindung hat.

  4. Ihr Webbrowser generiert einen gemeinsamen symmetrischen Schlüssel, der zum Verschlüsseln des HTTP-Datenverkehrs auf dieser Verbindung verwendet wird. Dies ist viel effizienter als die Verschlüsselung mit öffentlichem / privatem Schlüssel für alles. Ihr Browser verschlüsselt den symmetrischen Schlüssel mit dem öffentlichen Schlüssel des Webservers und sendet ihn zurück, so dass nur der Webserver den Schlüssel entschlüsseln kann, da nur der Webserver seinen privaten Schlüssel hat.

Beachten Sie, dass die Zertifizierungsstelle (Certificate Authority, CA) zur Verhinderung von Man-in-the-Middle-Angriffen unerlässlich ist. Selbst ein unsigniertes Zertifikat verhindert jedoch, dass jemand Ihren verschlüsselten Datenverkehr passiv abhören kann, da er keine Möglichkeit hat, auf Ihren freigegebenen symmetrischen Schlüssel zuzugreifen.

Es ist erwähnenswert, dass Sie neben dem Kauf eines Zertifikats (wie oben erwähnt) auch Ihr eigenes kostenlos erstellen können; Dies wird als “selbstsigniertes Zertifikat” bezeichnet. Der Unterschied zwischen einem selbstsignierten Zertifikat und einem erworbenen ist einfach: Das erworbene Zertifikat wurde von einer Zertifizierungsstelle signiert, von der Ihr Browser bereits weiß. Mit anderen Worten, Ihr Browser kann die Authentizität eines gekauften Zertifikats leicht überprüfen.

Leider hat dies zu einem weit verbreiteten Missverständnis geführt, dass selbstsignierte Zertifikate von Natur aus weniger sicher sind als solche, die von kommerziellen Zertifizierungsstellen wie GoDaddy und Verisign verkauft werden, und dass Sie mit Browserwarnungen / Ausnahmen leben müssen, wenn Sie sie verwenden; das ist falsch .

Wenn Sie ein selbstsigniertes Zertifikat (oder ein CA-Zertifikat, wie von bobince vorgeschlagen) sicher verteilen und es in den Browsern installieren, die Ihre Site verwenden , ist es genauso sicher wie eine, die gekauft wurde und ist nicht anfällig für Man-in-the-Middle Angriffe und Cert-Fälschung. Offensichtlich bedeutet dies, dass dies nur sinnvoll ist, wenn nur wenige Personen einen sicheren Zugriff auf Ihre Website benötigen (z. B. interne Apps, persönliche Blogs usw.).

Im Interesse der Sensibilisierung und der Ermutigung kleinerer Blogger wie mir, sich selbst zu schützen, habe ich ein Einsteiger-Tutorial geschrieben, das die Konzepte hinter Zertifikaten und die sichere Erstellung und Verwendung eines selbstsignierten Zertifikats näher erläutert (komplett mit Codebeispielen und Screenshots). Hier ist ein Link für den Fall, dass er für andere in der Zukunft hilfreich ist: http://www.clintharris.net/2009/self-signed-certificates/ .

Du hast das gesagt

Der Browser ruft die Ausstellerinformationen des Zertifikats aus diesem Zertifikat ab, verwendet diese dann, um den Aussteller zu kontaktieren, und vergleicht Zertifikate auf Gültigkeit.

Der Client muss nicht mit dem Aussteller aus zwei Gründen überprüfen:

  1. Alle Browser verfügen über eine vorinstallierte Liste aller wichtigen öffentlichen Schlüssel von CAs
  2. Das Zertifikat ist signiert und diese Signatur selbst ist ein ausreichender Beweis dafür, dass das Zertifikat gültig ist, da der Client selbst sicherstellen kann, dass das Zertifikat authentisch ist, ohne den Server des Herausgebers zu kontaktieren. Das ist die Schönheit der asymmetrischen Verschlüsselung.

Beachten Sie, dass 2. nicht ohne 1 möglich ist.

Das ist in diesem großen Diagramm, das ich vor einiger Zeit gemacht habe, besser erklärt

(gehe zu “Was ist eine Signatur?” unten)

Klecks

Der Client verfügt über einen vorab festgelegten Speicher der öffentlichen Schlüssel der SSL-Zertifizierungsstellen. Es muss eine Vertrauenskette vom Zertifikat für den Server über zwischengeschaltete Behörden bis zu einem der sogenannten “Root” -Zertifikate geben, damit der Server vertrauenswürdig ist.

Sie können die Liste der vertrauenswürdigen Behörden prüfen und / oder ändern. Oft machen Sie das, um ein Zertifikat für eine lokale Behörde hinzuzufügen, der Sie vertrauen – wie die Firma, für die Sie arbeiten, oder die Schule, an der Sie teilnehmen, oder was nicht.

Die voreingestellte Liste kann je nach verwendetem Client variieren. Die großen Anbieter von SSL-Zertifikaten stellen sicher, dass ihre Root-Zertifikate in allen gängigen Browsern enthalten sind ($$$).

Monkey-in-the-Middle-Angriffe sind “unmöglich”, es sei denn, der Angreifer verfügt über den privaten Schlüssel eines vertrauenswürdigen Stammzertifikats. Da die entsprechenden Zertifikate weit verbreitet sind, hätte die Offenlegung eines solchen privaten Schlüssels schwerwiegende Auswirkungen auf die Sicherheit des eCommerce im Allgemeinen. Aus diesem Grund werden diese privaten Schlüssel sehr, sehr genau bewacht.

Wenn Sie technisch versierter sind, ist diese Website wahrscheinlich, was Sie wollen: http://www.zytrax.com/tech/survival/ssl.html

Warnung: das Kaninchenloch geht tief :).