Freigeben über


Konfigurieren von vertrauenswürdigen ClickOnce-Herausgebern

 

Brian Noyes
Microsoft MVP

April 2005

Gilt für:
   Visual Studio 2005

Zusammenfassung: ClickOnce-Sicherheit ermöglicht Es Ihnen, die Von Code Access Security bereitgestellten Laufzeitsicherheitsschutz zu nutzen, während Sie gleichzeitig eine dynamische Bestimmung der Berechtigungen für eine bestimmte Anwendung zu dem Zeitpunkt zulassen, an dem die Anwendung über ClickOnce bereitgestellt wird. (11 gedruckte Seiten)

Inhalte

Vertrauenswürdige Herausgeber und ClickOnce-Anwendungssignatur 101
ClickOnce-Sicherheitsüberprüfungen beim Start
In die Zone gelangen
ClickOnce Vertrauenswürdige Herausgeber in Aktion
Automatisieren des Prozesses
Zusammenfassung
Zum Autor

ClickOnce-Sicherheit ermöglicht die automatische Erhöhung von Berechtigungen für eine von ClickOnce bereitgestellte Anwendung basierend auf Benutzeraufforderungen oder vertrauenswürdigen Herausgebern. Wenn Sie eine Anwendung mit ClickOnce bereitstellen, erfordern die Von der Anwendung ausgeführten Vorgänge oder die Ressourcen, auf die sie zu zugreifen versucht, möglicherweise mehr Berechtigungen für die Codezugriffssicherheit (Code Access Security, CAS), als sie basierend auf der aktuellen Richtlinie gewährt wird. Wenn dies der Fall ist, fordert die .NET Framework Runtime auf dem Clientcomputer den Benutzer standardmäßig auf und fragt ihn, ob er die Anwendung installieren und ihr erhöhte Vertrauenswürdigkeit gewährt.

In einer Unternehmensumgebung, in der Administratoren die Desktop- und Konfigurationssteuerung für jeden Desktop besitzen, ist es in der Regel besser, den Benutzer nicht zu Vertrauensentscheidungen auffordern zu müssen. Die meisten Benutzer haben nicht die Raffinesse, die Auswirkungen ihrer Vertrauensentscheidungen zu verstehen, und wissen nicht, wann sie Anwendungsberechtigungen erteilen sollten oder nicht. ClickOnce gibt Ihnen die Kontrolle über dieses Problem, indem ClickOnce-Anwendungen die möglichkeit haben, ihre eigenen Berechtigungen automatisch zu erhöhen, ohne dass der Benutzer dazu aufgefordert wird, wenn die Anwendungsmanifeste von einem vertrauenswürdigen Herausgeber signiert wurden.

Vertrauenswürdige Herausgeber und ClickOnce-Anwendungssignatur 101

Was macht also einen vertrauenswürdigen Herausgeber aus? Zunächst müssen Sie die ClickOnce-Bereitstellungs- und Anwendungsmanifeste immer mit einem Herausgeberzertifikat signieren. Als Nächstes muss das Zertifikat, das zum Signieren einer ClickOnce-Anwendung verwendet wird, im Zertifikatspeicher für vertrauenswürdige Herausgeber auf dem Computer des Benutzers konfiguriert werden. Und schließlich muss die Zertifizierungsstelle, die das Zertifikat ausgestellt hat, im Zertifikatspeicher der vertrauenswürdigen Stammzertifizierungsstelle auf dem Computer des Benutzers konfiguriert werden. Ich werde die Schichten jedes dieser drei Teile nacheinander zurückschälen.

Wenn Sie zum ersten Mal eine Windows Forms Anwendung in Visual Studio 2005 erstellen und mit ClickOnce veröffentlichen, generiert Visual Studio automatisch ein Herausgeberzertifikat für Sie und verwendet es, um Ihre Anwendung zu signieren, wenn sie veröffentlicht wird. In diesem Fall generiert er eine persönliche Zertifikatdatei (PFX-Datei) und fügt sie Ihrem Visual Studio-Projekt mit der Standardmäßigen Dateibenennungskonvention <ProjectName>_TemporaryKey.pfx hinzu. Visual Studio fügt dieses Zertifikat auch Ihrem persönlichen Zertifikatspeicher hinzu und aktiviert die Projekteinstellungen, die dieses Zertifikat als das Zertifikat festlegen, das zum Signieren von ClickOnce-Anwendungsmanifesten verwendet werden soll. Da dies alles automatisch geschieht, sind Sie sich möglicherweise nicht einmal bewusst, dass dies geschieht.

Hinweis Beta 1 ermöglichte es Ihnen, Ihre Manifeste mithilfe einer Schlüsseldatei mit starkem Namen (.snk-Datei gemäß Konvention) stark zu benennen. Beta 2 und RTM unterstützen dies nicht mehr, und Sie müssen Ihre Manifeste mit einem Herausgeberzertifikat signieren, in der Regel eine PFX-Datei, die kennwortgeschützte oder nicht geschützt ist.

Beim Signieren werden die öffentlichen und privaten Schlüssel im Zertifikat verwendet, um eine digitale XML-Signatur auf die XML-Manifestdateien der Bereitstellung und der Anwendung anzuwenden, die für eine ClickOnce-Anwendung generiert werden. Dieser Ansatz für digitale Signaturen stellt sicher, dass Sie wissen, wer eine bestimmte ClickOnce-Anwendungsbereitstellung basierend auf dem öffentlichen Schlüssel signiert hat, der in die Manifestdatei eingebettet wird, und dass die Datei seit der Signatur nicht manipuliert oder derEn Inhalt geändert wurde. Dadurch wird verhindert, dass eine böswillige Partei unbeabsichtigte Einstellungen oder Dateien zu einer ClickOnce-Anwendung hinzufügt, nachdem sie von einer vertrauenswürdigen Autorität veröffentlicht wurde.

Herausgeberzertifikate gibt es in zwei Varianten: selbstgeneriert oder von Drittanbietern verifiziert (z. B. von Verisign). Ein Zertifikat wird von einer Zertifizierungsstelle ausgestellt, die selbst über ein Zertifikat verfügt, das es als ausstellende Zertifizierungsstelle identifiziert. Ein selbst generiertes Zertifikat ist ein Zertifikat, das Sie zu Entwicklungszwecken erstellen, und Sie werden im Grunde sowohl die Zertifizierungsstelle als auch der Herausgeber, die das Zertifikat darstellt. Um für Produktionszwecke verwendet zu werden, sollten Sie ein Zertifikat verwenden, das von einem Drittanbieter generiert wurde, entweder von einem externen Unternehmen wie Verisign oder einer internen Autorität wie Ihrem Domänenadministrator in einer Unternehmensumgebung.

Um als vertrauenswürdiger Herausgeber zu gelten, muss das Herausgeberzertifikat im Zertifikatspeicher für vertrauenswürdige Herausgeber auf dem Computer des Benutzers installiert sein, und bei der ausstellenden Autorität des Herausgeberzertifikats muss ein eigenes Zertifikat im Zertifikatspeicher der vertrauenswürdigen Stammzertifizierungsstelle installiert sein. Sie können die certmgr.exe Zertifikats Verwaltungskonsole in Windows verwenden, um Zertifikate in den Speicher auf Ihrem Computer zu verwalten und zu installieren, und Sie können sie auch mit Visual Studio 2005 installieren. Ich werde Sie weiter unten in diesem Artikel durch die Verwendung von Visual Studio führen.

ClickOnce-Sicherheitsüberprüfungen beim Start

Wenn eine ClickOnce-Anwendung zum ersten Mal auf dem Desktop eines Benutzers gestartet wird, überprüft die .NET Framework Runtime zunächst, ob die Anwendungsmanifeste nicht manipuliert wurden, da sie mit einem beliebigen Herausgeberzertifikat signiert wurden, das zum Signieren verwendet wurde. Wenn sie diese Überprüfung bestehen, sucht die Runtime dann im Speicher der vertrauenswürdigen Stammzertifizierungsstelle, ob das Zertifikat für den Aussteller des Herausgeberzertifikats in diesem Speicher installiert ist. Anschließend wird überprüft, wer der Herausgeber des Zertifikats ist, und ob sich das Zertifikat im Speicher für vertrauenswürdige Herausgeber befindet. Wenn diese beiden Dinge wahr sind, wird der Benutzer standardmäßig nicht aufgefordert, und der Anwendung werden alle Berechtigungen gewährt, die in der Anwendungsmanifestdatei angegeben sind. Eine Anwendungsvertrauensstellung für diese Anwendung wird der .NET Framework Sicherheitsrichtlinie des Benutzers hinzugefügt, die App wird dann einfach gestartet und ausgeführt, und wenn die Berechtigungen im Anwendungsmanifest richtig angegeben wurden, sollte dem Benutzer niemals eine Eingabeaufforderung oder eine Sicherheitsausnahme angezeigt werden.

Wenn sowohl der Aussteller des Zertifikats als auch der Herausgeber, der durch das Zertifikat dargestellt wird, auf dem Clientcomputer unbekannt sind (basierend auf den in den Speichern installierten Zertifikaten), wird der Benutzer mit dem in Abbildung 1 gezeigten Dialogfeld aufgefordert, und er kann entscheiden, ob die Anwendung die erforderlichen Berechtigungen erhalten kann. abhängig von der Zone, in der die Anwendung gestartet wird. Wenn er unten auf den Link Weitere Informationen... klickt, wird das in Abbildung 2 gezeigte Dialogfeld angezeigt, das dem Benutzer ein wenig mehr Details darüber bietet, was passiert, wenn er auf die Schaltfläche Installieren klickt, aber im Allgemeinen wird er ihn wahrscheinlich nur erschrecken – wie die meisten Sicherheitsdialoge –, da es nur sehr wenig Informationen über die tatsächlichen Vorgänge enthält.

Abbildung 1. Nicht vertrauenswürdiger Herausgeber und Benutzereingabeaufforderung der Zertifizierungsstelle

Abbildung 2. Dialogfeld "Weitere Informationen"

Wenn das Zertifikat, das zum Signieren der Anwendungsmanifeste verwendet wird, von einer vertrauenswürdigen Stammzertifizierungsstelle generiert wird, sich das spezifische Herausgeberzertifikat jedoch nicht im Speicher für vertrauenswürdige Herausgeber befindet, wird der Benutzer trotzdem aufgefordert, jedoch mit einer etwas freundlicheren Eingabeaufforderung, als wenn der Aussteller des Herausgeberzertifikats unbekannt ist (siehe Abbildung 3). Die benutzerfreundlichere Eingabeaufforderung gibt den Herausgeber organization an, da Sie mit der Authenticode-Zertifikattechnologie und vertrauenswürdigen Stammstämmen zumindest darauf vertrauen können, dass die Veröffentlichungs-organization die Person ist, die sie gemäß dem Aussteller des Zertifikats angegeben hat. Wenn Sie der ausstellenden Behörde vertrauen, können Sie darauf vertrauen, dass der Herausgeber nicht vorgibt, jemand zu sein, der er nicht ist.

Abbildung 3. Benutzereingabeaufforderung für vertrauenswürdige Zertifizierungsstelle

Nachdem eine Anwendungsvertrauensstellung für eine bestimmte Anwendung erstellt wurde, entweder aufgrund einer automatischen Konfiguration basierend auf einem Zertifikat des vertrauenswürdigen Herausgebers oder basierend darauf, dass der Benutzer aufgefordert wird und die Anwendung installieren kann, müssen nachfolgende Versionen derselben Anwendung nicht erneut aufgefordert werden, es sei denn, die angeforderten Sicherheitsberechtigungen ändern sich.

In die Zone gelangen

Es gibt fünf integrierte Sicherheitszonen, die in CAS für ursprungsbasierte Vertrauensentscheidungen verwendet werden: MyComputer, LocalIntranet, Internet, TrustedSites und UntrustedSites. Dieselben Zonen werden verwendet, um zu bestimmen, welche Art von Eingabeaufforderung für Benutzer in Bezug auf das Erhöhen von ClickOnce-Anwendungsberechtigungen zulässig sein soll. Jede Zone entspricht dem Kontext, aus dem eine ClickOnce-Anwendung gestartet wird, der durch die vollständige Pfadadresse bestimmt wird, die zum Bereitstellungsmanifest (ANWENDUNGSdatei) für die ClickOnce-Anwendung verwendet wurde.

Tabelle 1 enthält einige Beispiele für Startzonen basierend auf der Adresse, die für das Bereitstellungsmanifest verwendet wird. Wenn es sich bei der Adresse um einen lokalen Dateipfad zu einem nicht vernetzten Laufwerk handelt, wird die Anwendung in der MyComputer-Zone gestartet. Wenn die Adresse ein Netzwerkprotokoll (HTTP- oder UNC-Dateifreigabe) verwendet und der Serverteil der Adresse ein einzelner Computername ist, wird er ausgewertet, um aus der LocalIntranet-Zone zu stammen. Wenn der Servername-Teil der Adresse Punkte enthält, wird er als aus der Internetzone stammend ausgewertet. TrustedSites und UntrustedSites hängen von einzelnen Adressen ab, die als Teil der Sicherheitseinstellungen vertrauenswürdige Websites und eingeschränkte Websites von Internet Explorer konfiguriert sind.

Tabelle 1. ClickOnce-Startzonenbeispiele

Startadresse Startzone
http://deploymentserver/MyClickOnceApp/MyClickOnceApp.application LocalIntranet
\\deploymentserver\MyClickOnceApp\MyClickOnceApp.application LocalIntranet
http://some.dotted.servername/Apps/MyClickOnceApp.application Internet
\\127.0.0.1\sharefolder\MyClickOnceApp.application Internet
C:\inetpub\wwwroot\MyClickOnceApp\MyClickOnceApp.application Mycomputer

Standardmäßig sind MyComputer, LocalIntranet und TrustedSites so konfiguriert, dass Benutzer aufgefordert werden, sicherheitsrelevante Berechtigungen einer ClickOnce-Anwendung zu erhöhen, wenn diese Anwendung nicht von einem vertrauenswürdigen Herausgeber signiert ist. Wenn das Anwendungsmanifest von einem Herausgeberzertifikat signiert wird, das von einer vertrauenswürdigen Stammzertifizierungsstelle ausgestellt wurde, kann diese Anwendung den Benutzer bei Bedarf zur Eingabe von erhöhten Berechtigungen auffordern (das heißt, das Herausgeberzertifikat ist nicht auch im Speicher für vertrauenswürdige Herausgeber installiert). Wenn eine von intern gestartete Anwendung nicht mit einem Zertifikat signiert ist, das von einer vertrauenswürdigen Stammzertifizierungsstelle ausgestellt wurde, darf die Anwendung nicht ausgeführt werden. Wenn die Anwendung nicht von einem vertrauenswürdigen Herausgeberzertifikat signiert ist, das von einer vertrauenswürdigen Stammzertifizierungsstelle ausgestellt wurde, darf die Anwendung nicht ausgeführt werden (d. h., es ist keine Benutzeraufforderung zulässig).

Diese Einstellungen können bei Bedarf für Ihr Unternehmen geändert werden, indem sie einen obskuren Registrierungsschlüssel konfigurieren, der von ClickOnce überprüft wird, um die Benutzereingabeaufforderungsrichtlinie zu bestimmen. Jedes der oben beschriebenen Verhaltensweisen entspricht einem Wert, den Sie über diesen Registrierungsschlüssel für jede Zone festlegen können.

Der Registrierungsschlüssel \HKLM\Software\Microsoft\. NETFramework\Security\TrustManager\PromptingLevel ist das, mit dem Sie das Eingabeaufforderungsverhalten anpassen können. Dieser Schlüssel ist nach einer .NET Framework 2.0-Installation standardmäßig nicht vorhanden, sodass Sie ihn manuell erstellen müssen, wenn Sie diese Einstellungen anpassen möchten.

Unter diesem Registrierungsschlüssel können Sie einen der fünf Zeichenfolgenwerte namens MyComputer, LocalIntranet, Internet, TrustedSites und UntrustedSites hinzufügen. Diese entsprechen ihren jeweiligen Zonen. Als Wert für diese können Sie eine von drei Zeichenfolgen festlegen: Enabled, Disabled oder AuthenticodeRequired. Aktiviert ist die Standardeinstellung für die Zonen MyComputer, LocalIntranet und TrustedSites. Der Internetstandard ist AuthenticodeRequired, und der Standardwert UntrustedSites ist Disabled. Tabelle 2 zeigt die Werte, die Sie für jede Zone festlegen können, und deren Auswirkungen. Abbildung 4 zeigt die Registrierungsschlüsselwerte, die auf ihr Standardverhalten festgelegt sind. Beachten Sie jedoch, dass dieser Schlüssel standardmäßig nicht vorhanden ist, sodass Sie ihn in der Regel nur erstellen, wenn Sie sie auf andere Werte als die Standardwerte festlegen.

Tabelle 2: PromptingLevel Registry Key Value Launch Effects

Wert Nicht vertrauenswürdige Stammautorität Von der vertrauenswürdigen Stammautorität ausgestelltes Zertifikat Vertrauenswürdige Stammautorität und Zertifikat des vertrauenswürdigen Herausgebers
Aktiviert Unfreundliche Benutzeraufforderung Benutzerfreundliche Eingabeaufforderung Keine Eingabeaufforderung; Berechtigungen gewährt und App-Starts
AuthenticodeRequired Anwendung deaktiviert Benutzerfreundliche Eingabeaufforderung Keine Eingabeaufforderung; Berechtigungen gewährt und App-Starts
Disabled Anwendung deaktiviert Anwendung deaktiviert Keine Eingabeaufforderung; Berechtigungen gewährt und App-Starts

Abbildung 4. Werte des Registrierungsschlüssels durch Benutzeraufforderung

ClickOnce Vertrauenswürdige Herausgeber in Aktion

Um dies zu testen, müssen Sie Zertifikate auf Ihrem Entwicklungscomputer konfigurieren. Der erste Schritt besteht darin, ein Zertifikat zum Signieren Ihrer ClickOnce-Apps zu verwenden und dieses Zertifikat in den gewünschten Zertifikatspeichern auf Ihrem Entwicklungs- oder Testcomputer zu konfigurieren. Wie bereits erwähnt, generiert Visual Studio ein neues Zertifikat für jedes ClickOnce-Projekt, es sei denn, Sie konfigurieren ein Zertifikat, das zum Signieren von ClickOnce-Manifesten verwendet wird, bevor Sie die Anwendung zuerst veröffentlichen. Ich empfehle, ein neues Testzertifikat zu generieren, es an einem bekannten Speicherort zu speichern und dann zu verwenden, um alle Ihre entwicklungsbasierten ClickOnce-Projekte zu signieren, damit Sie Ihre Zertifikatspeicher nicht mit einer Reihe von Testzertifikaten verwerfen müssen. Das automatisch generierte Zertifikat ist nicht kennwortgeschützter, und ich empfehle dringend, nur kennwortgeschützte Zertifikatdateien zu verwenden.

Um eine neue Zertifikatdatei in Visual Studio 2005 zu generieren, die kennwortgeschützt ist, wechseln Sie zum Fenster Projekteigenschaften (doppelklicken Sie in Projektmappen-Explorer auf den Knoten Eigenschaften, oder klicken Sie mit der rechten Maustaste auf den Projektknoten, und wählen Sie im Kontextmenü Eigenschaften aus. Aktivieren Sie die Registerkarte Signatur , aktivieren Sie das Kontrollkästchen ClickOnce-Manifeste signieren , und klicken Sie auf die Schaltfläche Testzertifikat erstellen... (siehe Abbildung 5). Sie werden zur Eingabe eines Kennworts aufgefordert, und Ihrem Projekt wird eine neue pfx-Datei mit einem Standardnamen hinzugefügt. Dieses Zertifikat wird auch als das Zertifikat festgelegt, das zum Signieren der Manifeste verwendet wird, und es wird in Ihrem persönlichen Zertifikatspeicher in Windows installiert. Anschließend können Sie die Datei umbenennen, sie an einen wiederverwendbaren Speicherort kopieren und dieses Zertifikat dann als Zertifikat für jede Anwendung konfigurieren, indem Sie auf der Registerkarte Signatur die Schaltfläche Aus Datei auswählen... drücken.

Abbildung 5. Signieren von Projekteigenschaften

Sobald Sie über ein Zertifikat verfügen und ermittelt haben, welches zum Signieren Ihrer ClickOnce-Manifeste in den Signaturprojekteigenschaften verwendet werden soll, können Sie Ihre Anwendung in Visual Studio veröffentlichen, und die Manifeste werden mit diesem Zertifikat signiert. Wenn Sie über ein "echtes" Herausgeberzertifikat verfügen (d. h. ein Verisign-Zertifikat oder ein Zertifikat, das Ihre Entwicklung organization von einer anderen vertrauenswürdigen Stammautorität signiert verwendet, können Sie es stattdessen verwenden, entweder aus einer Datei, wie oben beschrieben, oder indem Sie auf das Zertifikat in Ihrem persönlichen Zertifikatspeicher verweisen, indem Sie die Schaltfläche Aus Speicher auswählen... in den Eigenschaften des Signaturprojekts verwenden.

Um zu sehen, wie Sie eine Benutzeraufforderung mit einer Bereitstellung eines vertrauenswürdigen Herausgebers vermeiden können, müssen Sie das Herausgeberzertifikat auf dem Computer konfigurieren, auf dem die App mit ClickOnce gestartet wird. Dies ist häufig Ihr Entwicklungscomputer für erste Testversionen und Entwicklungszwecke. Wenn Sie das Zertifikat wie oben beschrieben selbst generiert haben (oder das befehlszeilenbasierte Hilfsprogramm makecert.exe, das in Visual Studio enthalten ist), müssen Sie dieses Zertifikat dem Speicher vertrauenswürdiger Stammzertifizierungsstellen hinzufügen. Dies liegt daran, dass Sie nicht nur der Herausgeber, sondern auch der Aussteller des Zertifikats sind. Anschließend möchten Sie dasselbe Zertifikat auch im Speicher für vertrauenswürdige Herausgeber installieren. Dies ist der letzte Schritt, mit dem die Anwendung ohne Aufforderung gestartet werden kann.

Um dies alles konkret zu machen, gehen wir ein Beispiel anhand der Zahlen durch. Starten Sie ein neues Windows-Anwendungsprojekt in Visual Studio 2005, und nennen Sie es ClickOnceTrustedPub. Nachdem das Projekt erstellt wurde, wechseln Sie zu den Projekteigenschaften, indem Sie in der Projektmappen-Explorer Struktur unter dem Projektknoten auf den Knoten Eigenschaften doppelklicken, und wählen Sie die Registerkarte Signatur aus.

Wählen Sie als Nächstes das Kontrollkästchen aus, um die ClickOnce-Manifeste zu signieren. Drücken Sie die Schaltfläche Testzertifikat erstellen... und geben Sie ein Kennwort für das Zertifikat ein. Die Datei, die erstellt und dem Projekt hinzugefügt wird, erhält den Namen ClickOnceTrustedPub_TemporaryKey.pfx. Benennen Sie sie in Projektmappen-Explorer in devcert.pfx um. Dies wäre auch ein guter Zeitpunkt, um die Datei in einen gängigen Entwicklungsordner auf Ihrem Computer zu kopieren, damit Sie sie für nachfolgende Projekte wiederverwenden können und Ihre Zertifikate nicht ständig neu generieren und konfigurieren müssen. Beim Erstellen der Zertifikatdatei hat Visual Studio sie auch in Ihrem persönlichen Zertifikatspeicher installiert.

Um dieses Zertifikat den Stores vertrauenswürdige Stammzertifizierungsstelle und vertrauenswürdiger Herausgeber hinzuzufügen, klicken Sie auf der Registerkarte Signaturprojekteigenschaften auf die Schaltfläche Weitere Details . Dadurch wird das Zertifikatinformationsdialogfeld geöffnet (siehe Abbildung 6). Klicken Sie unten auf der Registerkarte Allgemein auf die Schaltfläche Zertifikat installieren..., und Der Zertifikatimport-Assistent wird angezeigt.

Abbildung 6. Dialogfeld „Zertifikatinformationen“

Aktivieren Sie im zweiten Schritt des Assistenten das Optionsfeld zum Platzieren aller Zertifikate im folgenden Speicher, und drücken Sie dann die Schaltfläche Durchsuchen (siehe Abbildung 7). Dadurch wird ein Dialogfeld geöffnet, in dem Sie aus der Liste der Zertifikatspeicher auswählen können (siehe Abbildung 8).

Abbildung 7. Auswahl des Zertifikatspeichers des Assistenten

Abbildung 8. Dialogfeld "Zertifikatspeicherauswahl"

Wenn Sie diesen Prozess zum ersten Mal durchlaufen, wählen Sie den Speicher Vertrauenswürdige Stammzertifizierungsstellen aus, klicken Sie auf Weiter, und klicken Sie dann im Assistenten auf Fertig stellen . Sie werden mit einem ausführlichen Sicherheitswarnungsdialogfeld zu den Gefahren der Installation eines Zertifikats der Stammzertifizierungsstelle aufgefordert. Klicken Sie weiter auf Ja , oder Sie können die Funktionalität des vertrauenswürdigen Herausgebers von ClickOnce nicht ausprobieren, aber stellen Sie sicher, dass Sie das darin beschriebene Risiko verstehen. Wenn ein anderer Benutzer Ihr Zertifikat erhalten, eine Anwendung damit signiert und dann auf Ihrem Computer gestartet hat, würde Windows diese Anwendung als von einem Unternehmen veröffentlicht behandeln, das von einer vertrauenswürdigen Behörde überprüft wurde.

Wiederholen Sie den beschriebenen Prozess ab der Schaltfläche Weitere Details , aber installieren Sie dieses Mal dasselbe Zertifikat im Speicher für vertrauenswürdige Herausgeber.

Nachdem Sie dies getan haben, können Sie Ihre Anwendung mit ClickOnce veröffentlichen. Wählen Sie hierzu in Visual Studio im Menü Erstellen die Option Projektname>veröffentlichen<aus, und klicken Sie im eingeblendeten Assistenten auf Fertig stellen. Dadurch erstellen Sie Ihre App, veröffentlichen sie mit den Standardmäßigen ClickOnce-Veröffentlichungseinstellungen und erhalten eine Webseite, von der aus Sie die Installation als Client testen können, indem Sie auf der Webseite auf die Schaltfläche Installieren klicken. Wenn Sie auf diese Schaltfläche klicken, sollte die Anwendung herunterladen und ohne Aufforderung auf dem Desktop ausgeführt werden. Die von einer ClickOnce-Anwendung angeforderten Standardberechtigungen sind uneingeschränkt (voll vertrauenswürdig), und der angezeigte Standardlink für die Schaltfläche Installieren verwendet eine LocalIntranet-Zonen-URL. Wenn Sie also diesen Vorgang wiederholt haben, ohne das Zertifikat des vertrauenswürdigen Herausgebers konfiguriert zu haben, wären Sie mit dem in Abbildung 1 gezeigten Dialogfeld aufgefordert worden.

Automatisieren des Prozesses

In einer Betriebsumgebung mit vielen zu verwaltenden Benutzercomputern ist Visual Studio nicht auf jedem Computer verfügbar, um Herausgeberzertifikate zu konfigurieren. Daher müssen Sie das in Windows enthaltene Zertifikat Verwaltungskonsole (certmgr.exe) verwenden. Wenn Sie nur certmgr.exe ohne Argumente aus einer Befehlszeile ausführen, wird ein MMC-Fenster (Microsoft Management Console) angezeigt, in dem Sie Zertifikate aus einem der Speicher auf dem lokalen Computer hinzufügen oder entfernen können. Aber auch damit sollten Sie nicht jeden Computer berühren müssen, um die Zertifikate zu konfigurieren. Der Prozess kann auch mithilfe von certmgr.exe mit einigen Befehlszeilenparametern automatisiert werden.

Sie müssen zunächst den öffentlichen Teil eines Zertifikats in eine Zertifikatdatei (CER) von certmgr exportieren, indem Sie die Schaltfläche Exportieren verwenden:

Abbildung 9. Certmgr.exe Exportieren von Zertifikaten

Anschließend können Sie diese Zertifikatdatei auf einen Zielcomputer kopieren und certmgr.exe in der Befehlszeile ausführen. Sie müssen den Dateinamen zusammen mit dem Speicher übergeben, in dem sie als Befehlszeilenparameter mit den entsprechenden Schaltern platziert werden soll, und das Zertifikat wird auf dem Computer installiert:

certmgr –add alice.cer –s Root
certmgr –add alice.cer –s TrustedPublisher

All dies kann über ein Visual Studio-Setup- und Bereitstellungsprojekt (oder eine andere Form von Installer) skriptsiert oder einem benutzerdefinierten Installationsprogramm hinzugefügt werden, und das resultierende Windows Installer-Paket (.msi Datei) kann dem Bootstrapper für Ihre ClickOnce-Anwendung hinzugefügt werden. Weitere Informationen zum Bootstrapper finden Sie im Artikel Verwenden des Visual Studio 2005-Bootstrappers zum Kick-Start Ihrer Installation in der Ausgabe oktober 2004 des MSDN Magazine.

Zusammenfassung

ClickOnce-Sicherheit ermöglicht Es Ihnen, die Von Code Access Security bereitgestellten Laufzeitsicherheitsschutz zu nutzen, während Sie dennoch eine dynamische Bestimmung der Berechtigungen für eine bestimmte Anwendung an dem Punkt zulassen, an dem die Anwendung über ClickOnce bereitgestellt wird. Diese Flexibilität hat jedoch ihren Preis: Sie müssen entscheiden, ob der Benutzer durch Aufforderungen für das Erhöhen von Anwendungsberechtigungen verantwortlich sein soll und ob diese Aufforderung darauf basieren soll, woher das Herausgeberzertifikat stammt. Das Standardverhalten von ClickOnce ist am einfachsten zu verstehen. Entweder erhöht eine Anwendung automatisch ihre Berechtigungen, da sie von einem vertrauenswürdigen Herausgeber bereitgestellt wird, oder sie fordert den Benutzer auf, ihn entscheiden zu lassen, ob er dem Herausgeber vertrauen soll. In kontrollierteren Umgebungen sollten Sie benutzeraufforderungen einschränken. In diesem Artikel wurde beschrieben, wie Sie dies mithilfe des Registrierungsschlüssels PromptingLevel und konfigurieren von Herausgeber- und vertrauenswürdigen Stammautoritätszertifikaten auf dem Computer des Benutzers tun können. Es ist wichtig, die Auswirkungen der verschiedenen Werte zu verstehen und wie sie sich mit verschiedenen Zertifikatspeicherkonfigurationen verhalten, um den Sicherheitsschutz von ClickOnce ordnungsgemäß einsetzen zu können.

 

Zum Autor

Brian Noyes ist microsoft MVP und bekannter Sprecher, Trainer, Autor und Berater bei IDesign, Inc. (www.idesign.net). Er spricht bei TechEd USA und Malaysia, Visual Studio Connections, VSLive!, DevEssentials und anderen Konferenzen und ist einer der am besten bewerteten Referenten im INETA Speakers Bureau. Er hat zahlreiche Artikel über .NET Framework Entwicklung für MSDN Magazine, Visual Studio Magazine, asp.netPRO, The Server Side .NET, CoDe Magazine, .NET Developer's Journal und andere Publikationen veröffentlicht. Sein neuestes Buch Data Binding in Windows Forms 2.0, Teil der Addison-Wesley .NET Development Series, wird im Herbst 2005 in die Regale kommen. Brian begann mit der Programmierung seines Gehirns beim Fliegen von F-14 Tomcats in der Navy, indem er seine Fähigkeiten und sein Interesse an der Programmierung von Flugzeug- und Avioniksimulationen, Prototypen und Unterstützungsanwendungen anwendete, während er seine Nebennieren an der Top Gun und der U.S. Naval Test Pilot School stimulierte.