2010-11-24 13 views
0

Angenommen, System S besitzt ein Zertifikat C. Das folgende Zitat legt nahe, dass, wenn C von S's Service-Apps verwendet werden soll, um sich gegenüber Clients zu authentifizieren, C in LCS gespeichert werden sollte. Aber wenn C ist von S's Client-Anwendungen verwendet werden, sich auf einen Dienst zu authentifizieren, dann sollten C innerhalb CUS gespeichert werden:In welchen Zertifikatsspeicher sollten wir die Zertifikate des Servers setzen

• Die lokalen Computerspeicher (LCS). Enthält die Zertifikate , auf die von Computerprozessen zugegriffen wird, z. B. ASP.NET. Verwenden Sie diesen Speicherort zum Speichern von Zertifikaten, die den Server an Clients authentifizieren.

• Der aktuelle Benutzerspeicher (CUS). Interaktive Anwendungen in der Regel Zertifikate hier für den aktuellen Benutzer des Computers setzen. Wenn Sie eine Client-Anwendung erstellen, geben Sie hier typischerweise Zertifikate ein, die einen Benutzer für einen Dienst authentifizieren, der ist.

Aber die nächste Zitat Art des oben negiert, da er sagt, wenn S's Dienst in einer Anwendung eingebettet ist, die unter einem Benutzerkonto ausgeführt wird, dann Zertifikat C sollte innerhalb CUS

Auswahl gespeichert werden, in dem auf ein Zertifikat speichern hängt davon ab, wie und wann der Service oder Client ausgeführt wird. Die folgenden allgemeinen Regeln gelten:

• Wenn der Dienst ein Windows-Dienst ist, ein Dienst in „Server“ Modus ausgeführt ohne Benutzeroberfläche unter einem Netzwerk-Dienstkonto, verwenden Sie die lokalen Computerspeicher. Beachten Sie, dass Administrator Berechtigungen erforderlich sind, um Zertifikate in den lokalen Computer Speicher zu installieren.

• Wenn der Dienst oder Client in einer Anwendung eingebettet ist, die Benutzerkonto unter ausgeführt wird, verwenden Sie dann den aktuellen Benutzerspeicher.

a) was ist mit gemeint, der in eine Anwendung eingebettet wird? Wird ein WCF-Dienst in Net ausgeführt? Konsolenanwendung oder innerhalb der Asp.Net-Anwendung, die als eingebettet betrachtet wird?

b) Und warum, wenn App (die den WCF-Dienst einbettet) unter dem Benutzerkonto ausgeführt wird (selbst wenn dieses Konto über Administratorrechte verfügt), sollte sich das Zertifikat in CUS befinden? Bedeutet das, wenn es sich innerhalb von LCS befindet, wird S (auch bekannt als Client-App, die versucht, dieses Zertifikat an den Server zu senden) nicht in der Lage sein, das Zertifikat zu finden?

danke

Antwort

2

a) Ein WCF-Dienst innerhalb einer .NET-Konsolenanwendung ausgeführt würde, die Beschreibung eines "embedded" Service angesehen werden nach. Dies wird auch als selbst gehosteter Dienst bezeichnet.

Wenn der Dienst in einer ASP.Net-Anwendung ausgeführt wird, hängt es davon ab, welcher Prozess die ASP.Net-Anwendung hostet, normalerweise wird dies jedoch als Dienst im "Server" -Modus betrachtet.

b) Damit sich ein Dienst gegenüber Clients authentifizieren kann, benötigt der Benutzer, unter dem der Dienstprozess ausgeführt wird, Zugriff auf den privaten Schlüssel, der dem Zertifikat entspricht. Die einfachste Möglichkeit, dies zu erreichen, besteht darin, das Zertifikat (mit privatem Schlüssel) im Zertifikatspeicher des Benutzers zu installieren, der den Prozess ausführt.

Es ist möglich, dass eine Anwendung, die als beliebiger Benutzer ausgeführt wird, auf ein Zertifikat und einen privaten Schlüssel zugreifen kann, die im lokalen Computerspeicher gespeichert sind, solange Sicherheitsberechtigungen dies zulassen.

Es läuft alles auf die Identität des laufenden Prozesses ab und ob es berechtigt ist, auf den privaten Schlüssel zuzugreifen, der dem gewünschten Zertifikat zugeordnet ist.

+0

"Es ist möglich, dass eine Anwendung, die als beliebiger Benutzer ausgeführt wird, auf ein Zertifikat und einen privaten Schlüssel zugreift, die im lokalen Computerspeicher gespeichert sind, solange Sicherheitsberechtigungen dies zulassen." A - Wenn das Benutzerkonto, unter dem der Dienst ausgeführt wird, über ausreichende Sicherheitsberechtigungen verfügt, sucht der Dienst, wenn dieser Dienst ein Zertifikat benötigt, sowohl nach CUS als auch nach LCS. B - Wenn die Client-App auch über ausreichende Berechtigungen verfügt, können wir ihr Zertifikat auch in LCS speichern? – user437291

+0

BTW - Ich habe b) Frage in meinem ursprünglichen Beitrag bearbeitet, da es irgendwie mehrdeutig war - nur Ihnen zu sagen, wenn Ihre Antwort nicht gültig ist für bearbeitete Frage – user437291

+0

"Ein WCF-Dienst, der innerhalb einer .NET-Konsolenanwendung läuft gemäß dieser Beschreibung als "eingebetteter" Dienst betrachtet. Dies wird auch als selbst gehosteter Dienst bezeichnet. " Darf ich fragen, was ist die Definition eines eingebetteten Dienstes? – user437291

Verwandte Themen