Ihr Server verfügt über ein Zertifikat, das aus einem privaten und einem öffentlichen Schlüssel besteht. Der Server gibt natürlich niemals den privaten Schlüssel aus, aber jeder kann den öffentlichen Schlüssel erhalten. Der öffentliche Schlüssel ist in ein Zertifikatcontainerformat eingebettet. Dieses Format enthält die IP-Adresse oder den Domain-Namen des Servers, den Besitzer dieser IP-Adresse/Domain-Name, eine E-Mail-Adresse des Eigentümers usw.
Das Ganze ist von einer vertrauenswürdigen Autorität unterzeichnet. Die vertrauenswürdige Autorität, auch bekannt als Zertifizierungsstelle (Certificate Authority, CA), hat ebenfalls ein privates/öffentliches Schlüsselpaar. Sie geben ihnen Ihr Zertifikat, sie verifizieren, dass die Informationen im Container korrekt sind und signieren sie mit ihrem privaten Schlüssel, nur sie haben Zugriff darauf.
Der öffentliche Schlüssel der Zertifizierungsstelle ist standardmäßig auf dem Benutzersystem installiert, die meisten bekannten Zertifizierungsstellen sind bereits in der Standardinstallation Ihres bevorzugten Betriebssystems oder Browsers enthalten.
Wenn nun ein Benutzer eine Verbindung zu Ihrem Server herstellt, verwendet Ihr Server den privaten Schlüssel zum Signieren einiger Daten, Pakete, die Daten mit seinem öffentlichen Schlüssel signieren, und sendet alles an den Client.
Was kann der Client jetzt tun? Zuallererst kann es den öffentlichen Schlüssel verwenden, der gerade gesendet wurde, um die signierten Daten zu verifizieren. Da nur der Besitzer des privaten Schlüssels in der Lage ist, die Daten korrekt so zu signieren, dass der öffentliche Schlüssel die Signatur verifizieren kann, weiß er, dass derjenige, der dieses Datenelement signiert hat, den privaten Schlüssel zu dem empfangenen öffentlichen Schlüssel besitzt . So weit, so gut. Aber was hält einen Hacker davon ab, das Paket abzufangen, die signierten Daten durch Daten zu ersetzen, die er mit einem anderen Zertifikat signiert hat, und den öffentlichen Schlüssel durch seinen öffentlichen Schlüssel zu ersetzen? Nichts.
Deshalb überprüft der Client, nachdem die signierten Daten verifiziert wurden (oder bevor sie verifiziert werden), ob der empfangene öffentliche Schlüssel eine gültige CA-Signatur besitzt. Mithilfe des bereits installierten öffentlichen Zertifizierungsstellenschlüssels wird überprüft, ob der empfangene öffentliche Schlüssel von einer bekannten Zertifizierungsstelle signiert wurde. Andernfalls wird es abgelehnt (wie ein Hacker es auf dem Weg vielleicht ersetzt).
Last but not least, überprüft es die Informationen innerhalb des öffentlichen Schlüssels Container. Entspricht die IP-Adresse oder der Domänenname wirklich der IP-Adresse oder dem Domänennamen des Servers, mit dem der Client gerade kommuniziert? Wenn nicht, ist etwas fischig!
Die Leute mögen fragen: Was hält einen Hacker davon ab, nur sein eigenes Schlüsselpaar zu erstellen und nur seinen Domainnamen oder seine IP-Adresse in das Zertifikat zu setzen? Einfach: Wenn er das macht, wird kein CA seinen Schlüssel signieren. Um eine CA-Signatur zu erhalten, müssen Sie nachweisen, dass Sie wirklich der Eigentümer dieser IP-Adresse oder des Domänennamens sind. Der Hacker ist nicht, er kann das nicht beweisen, er wird keine Unterschrift bekommen. Das wird also nicht funktionieren.
Okay, wie wäre es mit dem Hacker registriert seine eigene Domain, ein Zertifikat dafür erstellen, und das von einer CA unterzeichnet haben? Das funktioniert, er wird es signiert bekommen, es ist seine Domäne, kein Problem. Er kann dies jedoch nicht verwenden, wenn Sie Ihre Verbindung hacken. Wenn er dieses Zertifikat verwendet, wird der Browser sofort sehen, dass der signierte öffentliche Schlüssel für die Domain example.net ist, aber er redet gerade mit example.com, nicht mit der gleichen Domain, also ist wieder etwas fischig.
Gute Antwort! Aber ich habe eine andere verwandte Frage ... Zitat: "die meisten bekannten CAs sind bereits in der Standard-Installation von Ihrem Lieblings-Betriebssystem oder Browser enthalten." Ich frage mich, wie der Browser die Standard-CA erweitern? Wird es automatisch gegen einen Webservice geprüft? oder wird es nur für die nächste Version der Browser-Version tun? – forestclown
Die CA-Zertifikate werden entweder zusammen mit dem Browser oder dem Betriebssystem ausgeliefert. Firefox, Chrome, Opera haben eigene CA-Cert-Kopien, Internet Explorer und Safari CA-Zertifikate in Windows oder OS X installiert. Nichts hält einen Browser davon ab, sowohl eigene Kopien als auch OS-weite Zertifikate zu verwenden Das). Sie erhalten nur neue Zertifizierungsstellen, indem Sie entweder den Browser aktualisieren, das Betriebssystem aktualisieren oder sie manuell installieren (indem Sie sie herunterladen und dann dem Browser oder Ihrem Betriebssystem hinzufügen, beides ist möglich). – Mecki
Das einzige, was Browser online überprüfen (wenn sie können) ist, ob ein CA-Zertifikat noch gültig ist oder nicht. Jeder CA-Dienst führt einen Zertifikatsperrserver aus, bei dem ein Browser nachfragen kann, ob ein bestimmtes Zertifikat noch gültig ist oder widerrufen wurde. Dies geschieht über das OCSP-Protokoll: http://tinyurl.com/pcjk2 Certs enthalten die Adresse eines zu übergebenden OCSP-Servers. – Mecki