Die snk und pfx werden für zwei verschiedene Zwecke verwendet. Das Snk wird für die starke Benennung verwendet, die ein Schlüsselpaar verwendet, um eine Assembly eindeutig zu identifizieren. Die pfx dient der Code-Signierung, die ein ähnlicher Prozess ist, der jedoch eine böswillige Manipulation von öffentlich verteilten Assemblys verhindern soll. Beide auf einer Assembly verwenden beide Namen und signieren es.
Es ist in Ordnung, Ihre eigene SNK-Datei zu erstellen, solange Sie den privaten Schlüssel sichern. Mit der PFX-Datei, die Sie von Verisign erhalten, können Sie die Baugruppe unter Verwendung eines Schlüssels signieren, der von einem Drittanbieter gesichert wird. Dies ist eine zusätzliche Sicherheitsebene, mit der Benutzer Ihrer Assembly erfahren, dass sie nicht manipuliert wurde.
Also bindet das snk nur ein Private-Public-Schlüsselpaar an eine Assembly, unabhängig von der Identität des Schlüsseleigentümers, um eine starke Referenz zu ermöglichen? Das heißt, wenn ich (ein Benutzer) der Exe vertraue, kann ich allen Referenzen vertrauen. Und wie würde ich der exe vertrauen, ist es, wo die Code-Signatur kommt? In diesem Fall sollte ich nur die exe und nicht die anderen Assemblys unterschreiben, weil ich weiß, dass sie nicht manipuliert wurden. Ist das richtig? –
Der grundlegende Unterschied besteht darin, dass eine SNK-Signierung von einer Person ausgeführt wird und das Hinzufügen einer Assembly zum GAC unterstützt. Die Code-Signierung wird wie bei SSL von einem vertrauenswürdigen, verbundenen Drittanbieter vermittelt. Der private Schlüssel wird gehalten und der öffentliche Schlüssel wird von Verisign veröffentlicht (in Ihrem Fall). In beiden Fällen wird die Assembly mit dem privaten Schlüssel "signiert" und mit dem öffentlichen Schlüssel validiert. –
Ich würde sagen, dass das Signieren mit snk die Gewissheit einer Manipulation (aufgrund der Hash-Prüfungen) garantiert, während das Signieren mit pfx die Gewissheit gibt, dass der Code tatsächlich aus einer bestimmten Quelle stammt (wie von Verisign beim Kauf des Zertifikats verifiziert). Außerdem (ich könnte hier falsch liegen), denke ich, dass das Unterschreiben mit pfx das Unterschreiben mit snk überflüssig macht. –