Freigeben über


SignTool

SignTool (Signtool.exe) ist ein Befehlszeilen-CryptoAPI-Tool, das Dateien digital signiert, Signaturen in Dateien überprüft und Zeitstempeldateien.

    SignTool [Operation] [Options] [FileName ...]

Teilliste von Vorgängen, Optionen und Argumenten

Vorgänge

catdb
Konfiguriert SignTool, um eine Katalogdatenbank zu aktualisieren. SignTool fügt einer Datenbank entweder Katalogdateien hinzu oder entfernt Kataloge aus einer Datenbank. Standardmäßig fügt der Catdb-Befehl die Dateien hinzu, deren Namen durch das FileName-Argument angegeben werden, der Systemkomponente (Treiber)-Datenbank.

Hinweis

Katalogdatenbanken werden für die automatische Suche nach Katalogdateien verwendet.

sign
Konfiguriert SignTool so, dass die Dateien digital signiert werden, deren Namen durch das FileName-Argument angegeben werden.

timestamp
Konfiguriert SignTool so, dass die Dateien, deren Namen durch das FileName-Argument angegeben werden, zeitstempelt werden.

verify
Konfiguriert SignTool, um die digitale Signatur der Dateien zu überprüfen, deren Namen durch das Argument FileName angegeben werden.

Catdb-Vorgangsoptionen

/d
Konfiguriert SignTool, um die Katalogdatenbank zu aktualisieren. Wenn weder /d noch /g-Option verwendet wird, aktualisiert SignTool die Systemkomponente und die Treiberdatenbank.

/g Guid
Konfiguriert SignTool, um die durch das GUID-Argument identifizierte Katalogdatenbank zu aktualisieren.

/r
Konfiguriert SignTool, um jede der Katalogdateien zu entfernen, deren Namen durch das Argument FileName angegeben werden, aus der Katalogdatenbank. Wenn diese Option nicht angegeben ist, fügt SignTool der Katalogdatenbank die angegebenen Katalogdateien hinzu.

/u
Konfiguriert SignTool so, dass bei Bedarf ein eindeutiger Name für eine Katalogdatei generiert wird, um einen Konflikt mit einer vorhandenen Katalogdatei in der Katalogdatenbank zu verhindern. Wenn diese Option nicht angegeben ist, überschreibt SignTool einen vorhandenen Katalog mit demselben Namen wie der hinzugefügte Katalog.

Signiervorgangsoptionen

/a Konfiguriert SignTool so, dass automatisch das beste Signaturzertifikat ausgewählt wird. Wenn diese Option nicht vorhanden ist, erwartet SignTool, dass nur ein Signaturzertifikat gefunden wird.

/ac CrossCertFileName
Gibt den Namen einer zertifikatübergreifenden Datei an, die mit einem Software Publisher-Zertifikat (Software Publisher Certificate, SPC) verwendet wird, das " CertificateName " heißt und im Zertifikatspeicher " StoreName" installiert ist. Diese Option sollte nur verwendet werden, wenn das Signaturzertifikat ein SPC ist.

/c CertTemplateName
Gibt den Zertifikatsvorlagennamen (eine Microsoft-Erweiterung) für das Signaturzertifikat an.

/csp CSPName
Gibt den Kryptografiedienstanbieter (CSP) an, der den privaten Schlüsselcontainer enthält.

/d Desc
Gibt eine Beschreibung des signierten Inhalts an.

/du URL
Gibt eine URL für die erweiterte Beschreibung des signierten Inhalts an.

/f SignCertFile
Gibt das Signaturzertifikat in einer Datei an. Nur das PFX-Dateiformat (Personal Information Exchange) wird unterstützt. Sie können das Pvk2Pfx-Tool verwenden, um SPC- und PVK-Dateien in das PFX-Format zu konvertieren.

Wenn sich die Datei im PFX-Format befindet, das durch ein Kennwort geschützt ist, verwenden Sie die Option "/p ", um das Kennwort anzugeben. Wenn die Datei keine privaten Schlüssel enthält, verwenden Sie die Optionen "/csp " und "/k ", um den CSP- bzw. privaten Schlüsselcontainernamen anzugeben.

/Fd
Gibt den Dateihashwertalgorithmus zum Erstellen von Dateisignaturen an. Die Standardeinstellung lautet SHA1.

/i IssuerName
Gibt den Namen des Ausstellers des Signaturzertifikats an. Dieser Wert kann eine Teilzeichenfolge des gesamten Ausstellernamens sein.

/j DLL
Gibt den Namen einer DLL an, die Attribute der Signatur bereitstellt.

/jp ParameterName
Gibt einen Parameter an, der an die durch den Befehl /j angegebene DLL übergeben wird.

/kc PrivKeyContainerName
Gibt den Schlüsselcontainernamen des privaten Schlüssels an.

/n SubjectName
Gibt den Namen des Antragstellers des Signaturzertifikats an. Dieser Wert kann eine Teilzeichenfolge des gesamten Antragstellernamens sein.

/nph
Wenn unterstützt, werden Seitenhashes für ausführbare Dateien unterdrückt. Die Standardeinstellung wird von der SIGNTOOL_PAGE_HASHES-Umgebungsvariablen und der wintrust.dll-Version bestimmt. Für nicht portable ausführbare Dateien wird diese Option ignoriert.

/p Kennwort
Gibt das Kennwort zum Öffnen einer PFX-Datei an. Eine PFX-Datei kann mithilfe der Option /f angegeben werden.

/p7 Pfad
Gibt an, dass für jede ausgewählte Inhaltsdatei eine PKCS #7-Datei (Public Key Cryptography Standards) erstellt wird. PKCS #7-Dateien erhalten die Bezeichnung path\filename.p7.

/p7ce-Wert
Gibt Optionen für den signierten PKCS #7-Inhalt an. Legen Sie Wert auf „Embedded“ fest, um den signierten Inhalt in die PKCS #7-Datei einzubetten, oder auf „DetachedSignedData“, um den signierten Datenabschnitt einer getrennten PKCS #7-Datei zu erstellen. Wenn die Option "/p7ce " nicht verwendet wird, ist der signierte Inhalt standardmäßig eingebettet.

/p7co OID
Gibt den Objektbezeichner (OID) zur Identifizierung des signierten PKCS #7-Inhalts an.

/ph Generiert bei Unterstützter Seitenhashes für ausführbare Dateien.

/r RootSubjectName
Gibt den Antragstellernamen des Stammzertifikats an, mit dem das Signaturzertifikat verkettet werden muss. Dieser Wert kann eine Teilzeichenfolge des gesamten Antragstellernamens des Stammzertifikats sein.

/s StoreName
Gibt den Namen des Zertifikatspeichers an, der geöffnet werden soll, wenn Sie nach dem Zertifikat suchen, das für die Signaturdateien verwendet werden soll. Wenn diese Option nicht angegeben ist, wird der Zertifikatspeicher "Mein Zertifikat" geöffnet.

/sha1-Hash
Gibt den SHA1-Hash des Signaturzertifikats an.

/Sm
Konfiguriert SignTool so, dass anstelle eines Benutzerzertifikatspeichers ein Computerzertifikatspeicher verwendet wird.

/t-URL
Gibt eine URL zu einem Zeitstempelserver an. Wenn diese Option nicht angegeben wird, wird die signierte Datei nicht zeitstempelt. Eine Katalogdatei oder Treiberdatei sollte zeitstempelt sein, da bei Kompromittierung des Schlüssels des Signierers der Zeitstempel die erforderlichen Informationen zum Widerrufen des Schlüssels bereitstellt, der zum Signieren der Datei verwendet wurde.

/td alg
Wird mit der Option /tr verwendet, um einen Digestalgorithmus anzufordern, der vom RFC 3161-Zeitstempelserver verwendet wird.

/tr-URL
Gibt die URL des RFC 3161-Zeitstempelservers an. Wenn diese Option (oder /t) nicht vorhanden ist, wird die signierte Datei nicht zeitstempelt. Im Fall eines Fehlers beim Hinzufügen des Zeitstempels wird eine Warnung generiert. Diese Option kann nicht mit der Option /t verwendet werden.

/u-Verwendung
Gibt die verbesserte Schlüsselverwendung (EKU) an, die im Signaturzertifikat vorhanden sein muss. Der Verwendungswert kann durch einen OID oder eine Zeichenfolge angegeben werden. Die Standardverwendung lautet "Codesignatur" (1.3.6.1.5.5.7.3.3).

/uw Specifies usage of "Windows System Component Verification" (1.3.6.1.4.1.311.10.3.6).

Zeitstempel-Vorgangsoptionen

/p7 Zeitstempel PKCS #7 Dateien.

/t-URL
Gibt die URL des Zeitstempelservers an. Die Datei, die zeitstempelt wird, muss zuvor signiert worden sein.

/td alg
Fordert einen Hashwertalgorithmus an, der vom RFC 3161-Zeitstempelserver verwendet wird. /td wird mit der Option /tr verwendet.

/tp index
Fügt der Signatur bei Index einen Zeitstempel hinzu

/tr alg
Fordert einen Hashwertalgorithmus an, der vom RFC 3161-Zeitstempelserver verwendet wird. /td wird mit der Option /tr verwendet.

Überprüfen der Vorgangsoptionen

/a
Gibt an, dass alle Methoden zum Überprüfen der Datei verwendet werden können. Zuerst werden die Katalogdatenbanken durchsucht, um zu ermitteln, ob die Datei in einem Katalog signiert ist. Wenn die Datei nicht in einem Katalog angemeldet ist, versucht SignTool, die eingebettete Signatur der Datei zu überprüfen. Diese Option wird zum Überprüfen von Dateien empfohlen, die möglicherweise, jedoch nicht unbedingt in einem Katalog signiert sind.

/Inserat
Gibt an, dass nur die Standardkatalogdatenbank nach dem Katalog durchsucht wird, in dem die Datei angemeldet war.

/all
Überprüft alle Signaturen in einer Datei mit mehreren Signaturen.

/wie
Gibt an, dass nur die Datenbank des Systemkomponentenkatalogs (Treiber) nach dem Katalog durchsucht wird, in dem die Datei angemeldet war.

/ag CatDBGUID
Gibt an, dass nur die Katalogdatenbank, die über das CatDBGUID-Argument identifiziert wird, nach dem Katalog durchsucht wird, in dem die Datei angemeldet wurde.

/c CatalogFileName
Gibt den Namen einer Katalogdatei an.

/d Gibt an, dass das Sign-Tool die Beschreibung und die Beschreibungs-URL drucken soll.

/ds index
Überprüft die Signatur an einer angegebenen Position.

/hash {SHA1|SHA256}
Gibt einen optionalen Hashalgorithmus zum Suchen einer Datei in einem Katalog an.

/Kp
Konfiguriert SignTool, um zu überprüfen, ob die digitale Signatur jeder durch das FileName-Argument angegebenen Dateien der Signaturrichtlinie für den Kernelmodus und die PnP-Geräteinstallationssignaturanforderungen von Windows Vista und höheren Versionen von Windows entspricht. Wenn diese Option nicht angegeben ist, überprüft SignTool nur, ob eine Signatur den Signierungsanforderungen der PnP-Geräteinstallation entspricht.

/Frau
Verwendet mehrere Überprüfungssemantiken. Dies ist das Standardverhalten eines WinVerifyTrust-Funktionsaufrufs unter Windows 8 und höher.

/o Version
Überprüft die Datei gemäß der Betriebssystemversion. Das Format für das Argument "Version " lautet "PlatformID:VerMajor.VerMinor.BuildNumber".

Die Verwendung der Option "/o " wird empfohlen. Wenn /o nicht angegeben ist, gibt SignTool möglicherweise unerwartete Ergebnisse zurück. Wenn Sie z. B. die Option "/o " nicht einschließen, werden Systemkataloge, die auf älteren Betriebssystemen ordnungsgemäß überprüft werden, möglicherweise nicht ordnungsgemäß auf einem neueren Betriebssystem überprüft.

/p7
Überprüft PKCS #7-Dateien. Bei der PKCS #7-Überprüfung werden keine vorhandenen Richtlinien verwendet. Die Signatur wird überprüft, und für das Signaturzertifikat wird eine Kette erstellt.

/pa
Konfiguriert SignTool so, dass die digitale Signatur jeder durch das FileName-Argument angegebenen Dateien den Signierungsanforderungen der PnP-Geräteinstallation entspricht.

Hinweis

Diese Option kann nicht mit den Catdb-Optionen verwendet werden.

/pg PolicyGUID
Gibt eine Überprüfungsrichtlinie nach GUID an. Die PolicyGUID entspricht der „ActionID“ der Überprüfungsrichtlinie.

Hinweis

Diese Option kann nicht mit den Catdb-Optionen verwendet werden.

/ph Gibt an, dass das Sign-Tool Seitenhashwerte drucken und überprüfen soll.

/r RootSubjectName
Gibt den Antragstellernamen des Stammzertifikats an, mit dem das Signaturzertifikat verkettet werden muss. Dieser Wert kann eine Teilzeichenfolge des gesamten Antragstellernamens des Stammzertifikats sein.

/Tw
Gibt an, dass eine Warnung generiert wird, wenn die Signatur nicht zeitstempelt ist.

Allgemeine Optionen

/q
Konfiguriert SignTool so, dass keine Ausgabe bei erfolgreicher Ausführung und minimale Ausgabe für fehlgeschlagene Ausführung angezeigt wird.

/v
Konfiguriert SignTool so, dass die ausführliche Version von Vorgang und Warnmeldungen angezeigt wird.

/?
Konfiguriert SignTool zum Anzeigen von Hilfeinformationen in einem Befehlsfenster.

Dateiname...
Gibt eine Liste mit einem oder mehreren Dateinamen an. Je nach Befehl signiert, Zeitstempel oder überprüfen Sie die angegebenen Dateien. Wenn der Catdb-Befehl verwendet wird, fügt SignTool die angegebenen Dateien aus einer Katalogdatenbank hinzu oder entfernt sie.

Für das Signieren, den Zeitstempel und die Überprüfung von Befehlen kann eine Datei eine Katalogdatei für ein Treiberpaket oder eine Treiberdatei sein.

Für den Catdb-Befehl muss eine Datei eine Katalogdatei für ein Treiberpaket sein.

Hinweise

SignTool unterstützt eine große Anzahl von Optionen. Die in diesem Thema beschriebenen Optionen sind auf diejenigen beschränkt, mit denen Sie ein Treiberpaket oder eine Treiberdatei signieren oder überprüfen können.

Eine vollständige Liste der SignTool-Parameter finden Sie auf der Microsoft SignTool-Website .

Weitere Informationen zum Signieren von Dateien finden Sie auf der Microsoft Cryptography Tools-Website .

Eine 32-Bit-Version von SignTool befindet sich im Ordner "bin\i386" des WDK. Eine 64-Bit-Version des Tools befindet sich in den Ordnern "bin\amd64" und "bin\ia64" des WDK.

Beispiele

Im Folgenden finden Sie ein Beispiel für das Signieren der Katalogdatei eines Treiberpakets mithilfe eines Software Publisher Certificate (SPC) und eines entsprechenden zertifikatübergreifenden Zertifikats . Dieses Beispiel gilt für das Signieren eines Treiberpakets für 64-Bit-Versionen von Windows Vista und neueren Versionen von Windows, die die Codesignaturrichtlinie für den Kernelmodus erzwingen. Im Beispiel wird die Katalogdatei des Treiberpakets AbcCatFileName.cat signiert. Zum Signieren der Katalogdatei verwendet das Beispiel das zertifikatübergreifende AbcCrossCertificate- und das AbcSPCCertificate-Zertifikat. Das AbcSPCCertificate-Zertifikat befindet sich im AbcCertificateStore-Zertifikatspeicher.

Im Beispiel wird auch ein öffentlich verfügbarer Zeitstempelserver zum Signieren der Katalogdatei verwendet. Der Timestamp-Server wird von DigiCert bereitgestellt und seine URL lautet http://timestamp.digicert.com. Weitere Informationen finden Sie unter RFC3161 kompatiblen TSA-Server (Time Stamp Authority).

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcCatFileName.cat

Im Folgenden sehen Sie ein Beispiel für das Einbetten einer Signatur in eine Treiberdatei mithilfe eines SPC und eines zertifikatübergreifenden Zertifikats. Alle Parameter sind identisch mit dem Beispiel, das eine Katalogdatei signiert, mit der Ausnahme, dass die signierte Datei AbcDriverFile.sys anstelle der Katalogdatei AbcCatFileName.cat ist.

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcDriverFile.sys

Im Folgenden finden Sie ein Beispiel für das Signieren der Katalogdatei eines Treiberpakets mithilfe eines kommerziellen Releasezertifikats oder eines kommerziellen Testzertifikats. Dieses Beispiel ist gültig für das Signieren eines Treiberpakets für 32-Bit-Versionen von Windows Vista und neueren Versionen von Windows, die die Codesignaturrichtlinie für den Kernelmodus nicht erzwingen. Im Beispiel wird die Katalogdatei des Treiberpakets CatalogFileName.cat signiert. Im Beispiel wird das AbcTestCertificate-Testzertifikat verwendet, das sich im Zertifikatspeicher "TestCertificateStore" befindet, um die Katalogdatei zu signieren.

Im Beispiel wird auch ein öffentlich verfügbarer Zeitstempelserver zum Signieren der Katalogdatei verwendet. Der Timestamp-Server wird von DigiCert bereitgestellt und seine URL lautet http://timestamp.digicert.com.

SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.digicert.com CatalogFileName.cat

Überprüfen von Beispielen

Im Folgenden finden Sie ein Beispiel für die Überprüfung, ob die Signatur der Katalogdatei eines Treiberpakets der Signatur der Codesignaturrichtlinie für den Kernelmodus und den Signierungsanforderungen für PnP-Geräte entspricht. Im Beispiel wird die Signatur der Katalogdatei AbcCatalogFile.cat überprüft.

SignTool verify /kp CatalogFileName.cat

Im Folgenden finden Sie ein Beispiel dafür, wie Sie überprüfen können, ob die Signatur einer datei, die in der Katalogdatei eines Treiberpakets aufgeführt ist, der Codesignaturrichtlinie für den Kernelmodus und den Signierungsanforderungen für PnP-Geräte entspricht. Im Beispiel wird die Signatur der Datei AbcDriverPackage.inf überprüft, die einen Fingerabdruckeintrag in der Katalogdatei CatalogFileName.cat haben muss.

SignTool verify /kp /c CatalogFileName.cat AbcDriverPackage.inf

Im Folgenden sehen Sie ein Beispiel für die Überprüfung, ob eine eingebettete Signatur der Codesignaturrichtlinie für den Kernelmodus unter Windows Vista und höheren Versionen von Windows entspricht. Im Beispiel wird die Signatur überprüft, die in die Treiberdatei AbcDriverFile.sys eingebettet ist.

SignTool verify /kp AbcDriverFile.sys

Im Folgenden finden Sie ein Beispiel für die Überprüfung, ob die Signatur der Katalogdatei eines Treiberpakets den Signierungsanforderungen für die PnP-Geräteinstallation entspricht. Im Beispiel wird die Signatur der Katalogdatei CatalogFileName.cat überprüft.

SignTool verify /pa CatalogFileName.cat

Beispiel für das Hinzufügen einer Katalogdatei zur Systemkomponentendatenbank (Treiberdatenbank)

Im Folgenden sehen Sie ein Beispiel für die Verwendung von SignTool zum Hinzufügen der Katalogdatei CatalogFileName.cat zur Systemkomponente (Treiber)-Datenbank. Die Option "/v " konfiguriert SignTool so, dass es im ausführlichen Modus ausgeführt wird, und die Option "/u " konfiguriert SignTool, um bei Bedarf einen eindeutigen Namen für die hinzuzufügende Katalogdatei zu generieren, um zu verhindern, dass eine bereits vorhandene Katalogdatei mit demselben Namen wie CatalogFileName.cat ersetzt wird.

SignTool catdb /v /u CatalogFileName.cat