Beispiel für die Assemblysignierung
Im folgenden Beispiel wird erläutert, wie eine signierte, nebeneinander signierte Assembly generiert wird, die aus dem Assemblymanifest, dem Überprüfungskatalog und den Assemblydateien besteht. Freigegebene, nebenseitige Assemblys sollten signiert werden. Das Betriebssystem überprüft die Assemblysignatur, bevor eine freigegebene Assembly im globalen side-by-side-Speicher (WinSxS) installiert wird. Dies erschwert das Spoofing des Herausgebers der nebenseitigen Assembly.
Beachten Sie, dass das Ändern der Assemblydateien oder des Inhalts des Manifests nach dem Generieren des Assemblykatalogs den Katalog und die Assembly ungültig macht. Wenn Sie die Assemblydateien oder das Manifest nach dem Erstellen und Signieren des Katalogs aktualisieren müssen, müssen Sie die Assembly erneut signieren und einen neuen Katalog generieren.
Beginnen Sie mit den Assemblydateien, dem Assemblymanifest und der Zertifikatdatei, die Sie zum Signieren der Assembly verwenden werden. Die Zertifikatdatei muss mindestens 2048 Bit groß sein. Sie müssen kein vertrauenswürdiges Zertifikat verwenden. Das Zertifikat wird nur verwendet, um sicherzustellen, dass die Assembly nicht beschädigt wurde.
Führen Sie Pktextract.exe hilfsprogramm aus, das im Microsoft Windows Software Development Kit (SDK) bereitgestellt wird, um das Öffentliche Schlüsseltoken aus der Zertifikatdatei zu extrahieren. Damit Pktextract ordnungsgemäß funktioniert, muss die Zertifikatdatei im gleichen Verzeichnis wie das Hilfsprogramm vorhanden sein. Verwenden Sie den extrahierten Öffentlichen Schlüsseltokenwert, um das publicKeyToken-Attribut des assemblyIdentity-Elements in der Manifestdatei zu aktualisieren.
Hier ist ein Beispiel für eine Manifestdatei mit dem Namen MySampleAssembly.manifest. Die MySampleAssembly-Assembly enthält nur eine Datei, MYFILE.DLL. Beachten Sie, dass der Wert für das publicKeyToken-Attribut des assemblyIdentity-Elements mit dem Wert des öffentlichen Schlüsseltokens aktualisiert wurde.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Microsoft.Windows.MySampleAssembly"
version="1.0.0.0"
processorArchitecture="x86"
publicKeyToken="0000000000000000"/>
<file name="myfile.dll"/>
</assembly>
Führen Sie als nächstesMt.exe hilfsprogramm aus, das im Windows SDK bereitgestellt wird. Die Assemblydateien müssen sich im gleichen Verzeichnis wie das Manifest befinden. In diesem Beispiel ist dies das Verzeichnis MySampleAssembly. Rufen Mt.exe für das Beispiel wie folgt auf:
c: \ MySampleAssembly>mt.exe -manifest MySampleAssembly.manifest -hashupdate -makecdfs
So sieht das Beispielmanifest nach dem Ausführen von Mt.exe. Beachten Sie, dass Mt.exe mit der Hashupdateoption den SHA-1-Hash der Datei hinzufügt. Ändern Sie diesen Wert nicht.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name=" Microsoft.Windows.MySampleAssembly"
version="1.0.0.0"
processorArchitecture="x86"
publicKeyToken="0000000000000000"/>
<file name="myfile.dll"
hash="a1d362d6278557bbe965a684ac7adb4e57427a29" hashalg="SHA1"/>
</assembly>
Wenn Mt.exe mit der Option -makecdfs ausgeführt wird, wird eine Datei mit dem Namen MySampleAssembly.manifest.cdf generiert, die den Inhalt des Sicherheitskatalogs beschreibt, der zum Überprüfen des Manifests verwendet wird.
Der nächste Schritt besteht im Ausführen Makecat.exe cdf, um den Sicherheitskatalog für die Assembly zu erstellen. Der Aufruf von Makecat.exe für dieses Beispiel würde wie folgt angezeigt:
c: \ MySampleAssembly>makecat MySampleAssembly.manifest.cdf
Der letzte Schritt besteht im Ausführen SignTool.exe, um die Katalogdatei mit dem Zertifikat zu signieren. Dies sollte dasselbe Zertifikat sein, das im vorherigen verwendet wurde, um das Öffentliche Schlüsseltoken zu generieren. Weitere Informationen zu SignTool.exe sie im Thema SignTool. Der Aufruf von SignTool für das Beispiel würde wie folgt angezeigt:
c: \ MySampleAssembly>signtool sign /f <fullpath> mycompany.pfx /du https: / /www.mycompany.com/MySampleAssembly /t https: / /timestamp.digicert.com MySampleAssembly.cat
Wenn Sie über ein authentifiziertes digitales Zertifikat verfügen und Ihre Zertifizierungsstelle das PVK-Dateiformat zum Speichern des privaten Schlüssels verwendet, können Sie den PVK Digital Certificate Files Importer (pvkimprt.exe) verwenden, um den Schlüssel in Ihren Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) zu importieren. Mit diesem Hilfsprogramm können Sie in das Branchenstandardformat PFX/P12 exportieren. Weitere Informationen zum PvK Digital Certificate Files Importer finden Sie im Abschnitt Bereitstellungsressourcen der MSDN Library, oder wenden Sie sich an Ihre Zertifizierungsstelle.
Siehe auch Erstellen signierter Dateien und Kataloge.