Erfordert nur bestimmte Clientzertifikate in IIS

1264
Jeremy

Ich implementiere eine Lösung, die Client-Zertifikate erfordert. Ich verwende IIS 7.5- und ASP.Net 4-WCF-Dienste.

Ich habe die SSL-Einstellungen so eingestellt, dass SSL erforderlich ist und Clientzertifikate erforderlich sind. Sieht soweit gut aus. Da ich mit der Verwendung von Clientzertifikaten noch nicht vertraut bin, habe ich einige Nachforschungen angestellt und bin auf einen Microsoft-Supportartikel gestoßen, in dem versucht wird, den Prozess der Überprüfung von Clientzertifikaten etwas zu erklären. Es sagt aus:

Wenn der Server zur Eingabe eines Zertifikats auffordert, enthält die Anforderung eine Liste der Zertifizierungsstellen, denen der Server vertraut. Der Client vergleicht diese Liste dann mit der Liste der Zertifizierungsstellen, denen der Client vertraut, und erstellt eine Liste der übereinstimmenden. Anschließend vergleicht der Client diese Liste mit den vorhandenen Clientzertifikaten und bestimmt, welche Zertifikate (falls vorhanden) von Zertifizierungsstellen ausgestellt wurden, denen sowohl der Client als auch der Server vertrauen.

Anscheinend sendet der Client Zertifikate, denen beide Seiten vertrauen. Was mich interessiert, ist, dass ich IIS oder meinen WCF-Dienst so konfigurieren kann, dass nur bestimmte Clientzertifikate akzeptiert werden, z. B. solche, die wir von unserer eigenen Zertifizierungsstelle speziell für diesen WCF-Dienst erstellen.

Wie kann verhindert werden, dass jemand ein Client-Zertifikat von VeriSign oder von unserer Zertifizierungsstelle verwendet, das zu einem anderen Zweck bestimmt war?

2
Der Client sendet kein Zertifikat. Es akzeptiert eines der vom Server angebotenen Zertifikate nach der Überprüfung mit lokalen Zertifikaten. Brian vor 10 Jahren 0
@ Brian - ich verstehe nicht. Wir sprechen über Client-Zertifikate. Auf der Serverseite muss der Client seine Identität nachweisen, indem er ein Serverzertifikat an den Server übermittelt, nicht wahr? Wie sendet der Client kein Zertifikat? Jeremy vor 10 Jahren 2
@Jeremy hast du jemals eine Lösung für dieses Problem gefunden? ahsteele vor 7 Jahren 0
@ahsteele habe ich nicht. In unserer Umgebung verwenden wir einen Reverse-Proxy-Mechanismus (F5 ist der Anbieter), sodass das Client-Zertifikat dort durchgesetzt wird. Wir können ein Skript schreiben, das sicherstellt, dass das Client-Zertifikat eines ist, das wir ausgestellt haben. Es erlaubt uns jedoch nicht zu überprüfen, dass das Zertifikat das Zertifikat für diesen bestimmten Benutzer ist. Wenn Sie herausfinden, wie Sie dies in IIS machen, würde ich das auch gerne wissen ... :) Jeremy vor 7 Jahren 0
@Jeremy hoffte, du hättest die silberne Kugel. Ich schätze, in Ihrem Szenario wird dem Benutzer auch eine Liste von Zertifikaten von allen Zertifizierungsstellen angezeigt, die sowohl vom Server als auch vom Client als vertrauenswürdig eingestuft werden. ahsteele vor 7 Jahren 0
@ahsteele - in unserem Fall ist es tatsächlich Software, die die Anforderung vornimmt, und kein Benutzer browst. Daher ist die Software für ein bestimmtes Zertifikat konfiguriert. Der Benutzer muss also kein Zertifikat auswählen und diese Auswahl erhalten. Jeremy vor 7 Jahren 0
@ahsteele - In einem WCF-Dienst können Sie einen benutzerdefinierten Zertifikatsprüfer schreiben. Siehe https://msdn.microsoft.com/en-us/library/ms733806(v=vs.110).aspx und https://msdn.microsoft.com/en-us/library/aa354512(v=vs. 110) .aspx Jeremy vor 7 Jahren 0

0 Antworten auf die Frage