2010-12-17 22 views
15

Nachdem zum Beispiel über starke Namen in .NET here, lesen, ich folgende Frage:.NET: Starke Namensgebung vs. Authenticode

Wir haben ein Authenticode Zertifikat Codesignatur, mit dem wir alle unsere EXE unterzeichnen , DLL- und MSI-Dateien. Der Vorteil davon ist, dass Windows weiß, dass das MSI aus einer vertrauenswürdigen Quelle stammt und dass die Authentizität jeder Datei bei Bedarf verifiziert werden kann.

Wir verwenden derzeit . NET starke Namen. Ich habe gelesen, dass das starke Benennen einer Datei bedeutet, dass sie digital mit einem selbstsignierten Zertifikat signiert ist. Meine Meinung dazu ist, dass ein Authenticode-Zertifikat, das von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde, viel wertvoller ist als ein selbstsigniertes Zertifikat, dessen Authentizität niemand überprüfen kann, da ihnen das Stammzertifikat fehlt (und wir werden das nicht an die Endbenutzer verteilen). sind wir!?).

Frage: Gibt es einen Wert in zusätzlich starken Benennung Baugruppen, wenn Authenticode Unterzeichnung bereits verwendet wird?

Antwort

11

Die Antwort hängt davon ab, warum Sie einen starken Namen erstellt haben - die beabsichtigte Verwendung eines starken Namens besteht darin, eine eindeutige Identität für die Baugruppe zu erstellen. Zum Beispiel, wenn Sie Ihre Assembly in GAC schieben müssen, dann ist der starke Name Pflicht. Ein starker Name ist jedoch nicht dazu gedacht, die Authentizität des Publishers zu überprüfen - Authenticode dient diesem Zweck. Sehen Sie diesen Artikel: http://blogs.msdn.com/b/shawnfa/archive/2005/12/13/authenticode-and-assemblies.aspx

+0

So brauche ich starke Namen nur für das Setzen meiner Baugruppen in den GAC. Wir stellen unsere Versammlungen nicht dort hin, also brauchen wir keine starken Namen. –

+4

Es ist nicht _entirely_ für die Veröffentlichung in der GAC - Es kann auch verwendet werden, um sicherzustellen, dass die DLLs von Ihrer Anwendung referenziert sind - da ein starker Name erfordert, dass alle referenzierten DLLs auch starke Namen haben, verhindert es jemanden eintauschen eine bösartige DLL. Auch dies bestätigt nicht, dass _who_ es geschrieben hat, aber es stellt sicher, dass alle Assemblys von jemandem geschrieben wurden, der Zugriff auf denselben SNK hat – Basic