Beide Zertifikate sollten vor der Verbindung vorhanden sein. Sie werden normalerweise von Zertifizierungsstellen erstellt (nicht unbedingt gleich). (Es gibt alternative Fälle, in denen die Überprüfung anders durchgeführt werden kann, einige Überprüfungen jedoch durchgeführt werden müssen.)
Das Serverzertifikat sollte von einer Zertifizierungsstelle erstellt werden, der der Client vertraut (und die in RFC 6125 definierten Namenskonventionen befolgt ).
Das Clientzertifikat sollte von einer Zertifizierungsstelle erstellt werden, der der Server vertraut.
Es liegt an jeder Partei zu entscheiden, was sie vertraut.
Es gibt Online-CA-Tools, mit denen Sie ein Zertifikat in Ihrem Browser beantragen und dort installieren können, sobald die CA es ausgestellt hat. Sie müssen sich nicht auf dem Server befinden, der die Clientzertifikatauthentifizierung anfordert.
Die Zertifikatsverteilung und das Vertrauensmanagement ist die Rolle der Public Key Infrastructure (PKI), die über die Zertifizierungsstellen implementiert wird. Der SSL / TLS-Client und die Server und dann lediglich Benutzer dieser PKI.
Wenn der Client eine Verbindung zu einem Server herstellt, der eine Clientzertifikatauthentifizierung anfordert, sendet der Server eine Liste der Zertifizierungsstellen, die er als Teil der Clientzertifikatsanforderung akzeptieren möchte. Der Kunde kann dann sein Kundenzertifikat senden, wenn er dies wünscht und ein geeignetes verfügbar ist.
Die Hauptvorteile der Clientzertifikatauthentifizierung sind:
- Die privaten Informationen (der private Schlüssel) werden niemals an den Server gesendet. Der Client gibt sein Geheimnis während der Authentifizierung überhaupt nicht preis.
- Ein Server, der keinen Benutzer mit diesem Zertifikat kennt, kann diesen Benutzer weiterhin authentifizieren, vorausgesetzt, er vertraut der Zertifizierungsstelle, die das Zertifikat ausgestellt hat (und das Zertifikat ist gültig). Dies ist der Art und Weise, wie Pässe verwendet werden, sehr ähnlich: Möglicherweise haben Sie noch nie eine Person getroffen, die Ihnen einen Pass zeigt. Da Sie jedoch der ausstellenden Behörde vertrauen, können Sie die Identität mit der Person verknüpfen.
Sie interessieren sich vielleicht für Vorteile von Client-Zertifikaten für die Client-Authentifizierung? (auf Security.SE) .
Was Sie als "bidirektionales SSL" bezeichnen, wird normalerweise als TLS / SSL mit Clientzertifikatauthentifizierung bezeichnet.
Bei einer "normalen" TLS-Verbindung zu example.com überprüft nur der Client, ob er tatsächlich mit dem Server für example.com kommuniziert. Der Server weiß nicht, wer der Client ist. Wenn der Server den Client authentifizieren möchte, werden normalerweise Kennwörter verwendet. Daher muss ein Client einen Benutzernamen und ein Kennwort an den Server senden. Dies geschieht jedoch innerhalb der TLS-Verbindung als Teil eines inneren Protokolls (z. B. HTTP) Teil des TLS-Protokolls selbst. Der Nachteil ist, dass Sie für jede Site ein separates Passwort benötigen, da Sie das Passwort an den Server senden. Wenn Sie beispielsweise dasselbe Passwort für PayPal und MyPonyForum verwenden, senden Sie dieses Passwort jedes Mal, wenn Sie sich bei MyPonyForum anmelden, an den Server von MyPonyForum, damit der Betreiber dieses Servers es abfangen und auf PayPal ausprobieren und Zahlungen in Ihrem Namen ausführen kann .
Die Clientzertifikatauthentifizierung bietet eine weitere Möglichkeit, den Client in einer TLS-Verbindung zu authentifizieren. Im Gegensatz zur Kennwortanmeldung wird die Clientzertifikatauthentifizierung als Teil des TLS-Protokolls angegeben. Dies funktioniert analog zur Authentifizierung des Servers durch den Client: Der Client generiert ein öffentlich-privates Schlüsselpaar und sendet den öffentlichen Schlüssel zur Signatur an eine vertrauenswürdige Zertifizierungsstelle. Die Zertifizierungsstelle gibt ein Clientzertifikat zurück, mit dem der Client authentifiziert werden kann. Der Client kann jetzt dasselbe Zertifikat zur Authentifizierung bei verschiedenen Servern verwenden (dh Sie können dasselbe Zertifikat für PayPal und MyPonyForum verwenden, ohne das Risiko einzugehen, dass es missbraucht werden kann). So funktioniert es: Nachdem der Server sein Zertifikat gesendet hat, fordert er den Client auf, auch ein Zertifikat bereitzustellen. Dann passiert etwas Magie mit öffentlichen Schlüsseln (wenn Sie die gelesenen Details wissen möchtenRFC 5246 ) und jetzt weiß der Client, dass er mit dem richtigen Server kommuniziert, der Server weiß, dass er mit dem richtigen Client kommuniziert, und beide verfügen über ein gemeinsames Schlüsselmaterial zum Verschlüsseln und Überprüfen der Verbindung.
quelle
Auf zwei Arten fragt der Client ssl nach dem digitalen Zertifikat des Servers und der Server fordert vom Client dasselbe an. Es ist sicherer, da es in beide Richtungen ist, obwohl es etwas langsam ist. Im Allgemeinen folgen wir dem nicht, da sich der Server nicht um die Identität des Clients kümmert, aber ein Client muss sicherstellen, dass der Server, mit dem er eine Verbindung herstellt, integer ist.
quelle