2009-05-27 11 views
0

Ich habe einen WCF-Dienst eingerichtet, der Transportsicherheit über netTcpBinding verwendet. Das für die Sicherheit des Dienstes verwendete Zertifikat wird von einer Zertifizierungsstelle signiert, die wir für die Entwicklung erstellt haben.Verwechslung mit Diensten und Zertifikaten mit einem anonymen Client

Kann mir jemand erklären, wie es funktioniert, dass mein anonymer Client sich mit dem Dienst verbinden und mit ihm kommunizieren kann, ohne dass dieselbe CA lokal installiert ist? Ich bin ziemlich neu in Zertifikaten und hätte angenommen, dass die Zertifizierungsstelle lokal installiert werden müsste, damit der Client die Daten aus dem Service entschlüsseln kann.

Der Dienst und der Client befinden sich beide auf Windows-Computern und der Client ist eine Windows Forms .NET 3.5-Anwendung.

Antwort

1

Nun, es gibt zwei Teile der Gleichung:

  • Sie könnten einen Server Zertifikat, das der Dienst selbst an die Clients zu authentifizieren, verwendet (um zu beweisen, es ist wirklich der Dienst es vorgibt zu sein)
  • Sie könnten einen Client Zertifikat haben, die der Client seine Identität an den Server in

welche sind Sie interessiert zu beweisen braucht?

Wenn Sie ein Server-/Dienstzertifikat haben, "kennt" der Client normalerweise den öffentlichen Schlüssel des Servers (er könnte im Zertifikatsspeicher des Clients installiert werden, z. B. durch ein Installationsprogramm oder durch Herunterladen und Installieren). Oder es fragt nach dem Zertifikat des Servers zu dem Zeitpunkt, zu dem der Proxy erstellt wird, und speichert den öffentlichen Schlüssel des Servers in der lokalen Client-Konfigurationsdatei zur späteren Verwendung. Diese Konfiguration wird dann erneut mit der App auf dem Client installiert.

Wenn der Client sich gegenüber dem Dienst authentifizieren möchte, muss das Clientzertifikat unbedingt lokal auf dem Cert-Speicher des Client-Computers installiert werden.

Ich würde empfehlen, die WCF Security Guidance auschecken - es ist eine großartige Ressource, und sie können erklären, wie man bestimmte Szenarien viel besser als ich kann!

In einer reinen Windows-Umgebung mit allen Benutzern in derselben Domäne scheint dies ein wenig Overkill zu sein - warum nicht einfach die integrierten, von Windows bereitgestellten Anmeldeinformationen verwenden? Das wäre viel einfacher, würde ich denken.

Marc

+0

Danke für die Antwort! Ich sollte klar sein, dass dies derzeit funktioniert, aber wir versuchen herauszufinden, WIE wir unsere CA auf dem Client überhaupt nicht sehen. Vielleicht fügt ClickOnce es zur Config hinzu? Wir sind nur an einem Serverzertifikat interessiert. Der Client wird über ClickOnce bereitgestellt und der Benutzer meldet sich über unsere Anwendung an. Vertrauen Sie mir, ich wünschte, wir könnten Windows-Anmeldeinformationen verwenden. Leider befinden sich viele unserer Websites/Clients nicht in einer Domäne und jedes Client-Terminal kann mehrere Benutzer im Laufe des Tages beherbergen, die mit einem einzelnen Benutzer bei Windows angemeldet sind. – 80bower

Verwandte Themen