Der Sinn eines SSL-Zertifikats besteht darin, dass der Browser dem öffentlichen Schlüssel des Servers für HTTPS-Transaktionen in angemessenem Maße vertraut.
Lassen Sie uns zunächst untersuchen, was passieren würde, wenn wir keine Zertifikate verwenden würden. Stattdessen würde der Server den öffentlichen Schlüssel im Klartext senden und der Browser würde eine verschlüsselte Kommunikation mit ihm initiieren (das erste, was er tun würde, wäre, seinen eigenen öffentlichen Schlüssel zu verschlüsseln und ihn sicher zu senden). Was ist, wenn ich und der Angreifer mich in die Mitte zwängen? Ich könnte Ihren öffentlichen Schlüssel im laufenden Betrieb durch meinen ersetzen, eine verschlüsselte Verbindung mit dem Browser herstellen, alles entschlüsseln, was ich erhalte, mit Ihrem öffentlichen Schlüssel verschlüsseln und übermitteln (und umgekehrt für Datenverkehr vom Typ Antwort). Keiner würde den Unterschied bemerken, da niemand die öffentlichen Schlüssel vorher kannte.
OK, wir haben festgestellt, dass der Browser meinem öffentlichen Schlüssel vertrauen muss. Eine Möglichkeit, dies zu tun, besteht darin, alle registrierten öffentlichen Schlüssel im Browser zu speichern. Dies würde natürlich jedes Mal ein Update erfordern, wenn jemand einen öffentlichen Schlüssel registriert, und dies würde zum Aufblähen führen. Man könnte öffentliche Schlüssel auch in den Händen von DNS-Servern 1 halten , aber DNS-Server können auch gefälscht werden, und DNS ist kein sicheres Protokoll.
Die einzige verbleibende Option besteht darin, das Vertrauen durch einen Signaturmechanismus zu "verketten". Der Browser speichert die Details einiger Zertifizierungsstellen, und Ihr Zertifikat wird zusammen mit einer Reihe anderer Zertifikate gesendet, wobei jedes Zertifikat das nächste signiert und zur Stammzertifizierungsstelle / vertrauenswürdigen Zertifizierungsstelle / eingebauten Zertifizierungsstelle wechselt. Es ist die Aufgabe der Zertifizierungsstelle, sicherzustellen, dass die Domäne Ihnen gehört, bevor Sie ein Zertifikat für Sie signieren.
Da es sich bei einer Zertifizierungsstelle um ein Unternehmen handelt, wird hierfür eine Gebühr erhoben. Einige mehr als andere.
Wenn Sie ein eigenes Zertifikat erstellt haben, erhalten Sie eine Fehlermeldung ähnlich der folgenden:
Es gibt keinen Wert für ein nicht signiertes Zertifikat. Es ist, als würde man einen Bleistift und ein Heft nehmen, einen Pass zeichnen, der behauptet, Barack Obama zu sein. Niemand wird es vertrauen.
1. Schließlich wird Ihr DNS-Eintrag erstellt, wenn Sie eine Domain registrieren. Ein interessantes Konzept wäre die Verwendung eines robusteren Protokolls, mit dem Sie gleichzeitig öffentliche Schlüssel registrieren können.