SignTool

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

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

Partielle Liste von Vorgängen, Optionen und Argumenten

Vorgänge

Catdb
Konfiguriert SignTool zum Aktualisieren einer Katalogdatenbank. SignTool fügt einer Datenbank Katalogdateien hinzu oder entfernt Kataloge aus einer Datenbank. Standardmäßig fügt der Befehl catdb die Dateien, deren Namen durch das Argument FileName angegeben werden, der Systemkomponentendatenbank (Treiber) hinzu.

Hinweis

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

sign
Konfiguriert SignTool, um die Dateien, deren Namen durch das Argument FileName angegeben werden, digital zu signieren.

timestamp
Konfiguriert SignTool zum Zeitstempeln der Dateien, deren Namen durch das Argument FileName angegeben 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 die Option /d noch /g verwendet wird, aktualisiert SignTool die Systemkomponente und die Treiberdatenbank.

/gGuid
Konfiguriert SignTool, um die Katalogdatenbank zu aktualisieren, die durch das GUID-Argument identifiziert wird.

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

/u
Konfiguriert SignTool, um bei Bedarf einen eindeutigen Namen für eine Katalogdatei zu generieren, um einen Konflikt mit einer vorhandenen Katalogdatei in der Katalogdatenbank zu verhindern. Wenn diese Option nicht angegeben ist, überschreibt SignTool jeden vorhandenen Katalog, der denselben Namen wie der hinzugefügte Katalog hat.

Optionen für Den Signierenvorgang

/Eine Konfiguriert SignTool, um automatisch das beste Signaturzertifikat auszuwählen. Wenn diese Option nicht vorhanden ist, erwartet SignTool, dass nur ein Signaturzertifikat gefunden wird.

/acCrossCertFileName
Gibt den Namen einer zertifikatübergreifenden Datei an, die mit einem Softwareherausgeberzertifikat (Software Publisher Certificate, SPC) mit dem Namen CertificateName verwendet wird und im Zertifikatspeicher StoreName installiert wird. Diese Option sollte nur verwendet werden, wenn das Signaturzertifikat ein SPC ist.

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

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

/dDesc
Gibt eine Beschreibung des signierten Inhalts an.

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

/fSignCertFile
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 die Datei im PFX-Format vorliegt, 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 Namen des CSP- bzw. privaten Schlüsselcontainers anzugeben.

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

/iIssuerName
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.

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

/kcPrivKeyContainerName
Gibt den Schlüsselcontainernamen des privaten Schlüssels an.

/nSubjectName
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 "Pfad\Dateiname.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, wird der signierte Inhalt standardmäßig eingebettet.

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

/Ph Falls unterstützt, werden Seitenhashes für ausführbare Dateien generiert.

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

/sStoreName
Gibt den Namen des Zertifikatspeichers an, der geöffnet werden soll, wenn nach dem Zertifikat gesucht wird, das zum Signieren von Dateien verwendet werden soll. Wenn diese Option nicht angegeben ist, wird der Zertifikatspeicher "Mein Zertifikat" geöffnet.

/sha1Hash
Gibt den SHA1-Hash des Signaturzertifikats an.

/Sm
Konfiguriert SignTool für die Verwendung eines Computerzertifikatspeichers anstelle eines Benutzerzertifikatspeichers.

/tURL
Gibt eine URL zu einem Zeitstempelserver an. Wenn diese Option nicht bereitgestellt wird, wird die signierte Datei nicht mit einem Zeitstempel versehen. Eine Katalogdatei oder Treiberdatei sollte mit einem Zeitstempel versehen werden. Wenn der Schlüssel des Signierers kompromittiert ist, enthält der Zeitstempel die informationen, die zum Widerrufen des Schlüssels erforderlich sind, der zum Signieren der Datei verwendet wurde.

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

/trURL
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.

/uNutzung
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 Gibt die Verwendung der "Überprüfung der Windows-Systemkomponenten" (1.3.6.1.4.1.311.10.3.6) an.

Optionen für den Zeitstempelvorgang

/p7 Zeitstempel PKCS #7-Dateien.

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

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

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

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

Überprüfen von 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 in keinem Katalog signiert 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.

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

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

/Als
Gibt an, dass nur die Katalogdatenbank der Systemkomponente (Treiber) nach dem Katalog durchsucht wird, in dem die Datei angemeldet wurde.

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

/cCatalogFileName
Gibt den Namen einer Katalogdatei an.

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

/dsindex
Ü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 der dateien, die durch das FileName-Argument angegeben werden, der Codesignierungsrichtlinie im Kernelmodus und den Anforderungen für die Signatur der PnP-Geräteinstallation von Windows Vista und höheren Versionen von Windows entspricht. Wenn diese Option nicht angegeben ist, überprüft SignTool nur, ob eine Signatur den Signaturanforderungen für die PnP-Geräteinstallation entspricht.

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

/oVersion
Ü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 unter einem älteren Betriebssystem ordnungsgemäß überprüft werden, unter einem neueren Betriebssystem möglicherweise nicht ordnungsgemäß ü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, um zu überprüfen, ob die digitale Signatur der einzelnen Dateien, die durch das FileName-Argument angegeben werden, den Signierungsanforderungen für die PnP-Geräteinstallation entspricht.

Hinweis

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

/pgPolicyGUID
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.

/rRootSubjectName
Gibt den Antragstellernamen des Stammzertifikats an, an das 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 mit einem Zeitstempel versehen ist.

Allgemeine Optionen

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

/v
Konfiguriert SignTool, um die ausführliche Version des Vorgangs und Warnmeldungen anzuzeigen.

/?
Konfiguriert SignTool, um Hilfeinformationen in einem Befehlsfenster anzuzeigen.

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

Für die Zeichen-, Zeitstempel- und Überprüfungsbefehle kann eine Datei eine Katalogdatei für ein Treiberpaket oder eine Treiberdatei sein.

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

Bemerkungen

SignTool unterstützt eine große Anzahl von Optionen. Die in diesem Thema beschriebenen Optionen sind auf die Optionen 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 höheren Versionen von Windows, die die Codesignaturrichtlinie im Kernelmodus erzwingen. Das Beispiel signiert die Katalogdatei des Treiberpakets AbcCatFileName.cat. 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 verwendet, um die Katalogdatei zu signieren. Der Zeitstempelserver wird von DigiCert bereitgestellt, und seine URL lautet http://timestamp.digicert.com.

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

Im Folgenden finden Sie ein Beispiel für das Einbetten einer Signatur in eine Treiberdatei mithilfe eines SPC und eines zertifikatübergreifenden Zertifikats. Alle Parameter sind mit denen im Beispiel identisch, 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 gilt für das Signieren eines Treiberpakets für 32-Bit-Versionen von Windows Vista und höheren Versionen von Windows, die die Codesignaturrichtlinie im Kernelmodus nicht erzwingen. Das Beispiel signiert die Katalogdatei des Treiberpakets CatalogFileName.cat. Im Beispiel wird das AbcTestCertificate-Testzertifikat im Zertifikatspeicher TestCertificateStore verwendet, um die Katalogdatei zu signieren.

Im Beispiel wird auch ein öffentlich verfügbarer Zeitstempelserver verwendet, um die Katalogdatei zu signieren. Der Zeitstempelserver 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

Beispiele überprüfen

Im Folgenden finden Sie ein Beispiel dafür, wie Sie überprüfen, ob die Signatur der Katalogdatei eines Treiberpakets mit der Codesignierungsrichtlinie im Kernelmodus und den Anforderungen für die Signatur der PnP-Geräteinstallation übereinstimmt. Im Beispiel wird die Signatur der Katalogdatei AbcCatalogFile.cat überprüft.

SignTool verify /kp CatalogFileName.cat

Im Folgenden finden Sie ein Beispiel für die Überprüfung, ob die Signatur einer Datei, die in der Katalogdatei eines Treiberpakets aufgeführt ist, der Kernelmodus-Codesignaturrichtlinie und den Anforderungen für die Signatur der PnP-Geräteinstallation entspricht. Im Beispiel wird die Signatur der Datei AbcDriverPackage.inf überprüft, die einen Fingerabdruckeintrag in der Katalogdatei CatalogFileName.cat aufweisen muss.

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

Im Folgenden finden Sie ein Beispiel dafür, wie Sie überprüfen, ob eine eingebettete Signatur der Codesignaturrichtlinie im Kernelmodus unter Windows Vista und höheren Versionen von Windows entspricht. Im Beispiel wird die Signatur überprüft, die in der 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 Signaturanforderungen 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 (Treiber)

Im Folgenden finden Sie ein Beispiel für die Verwendung von SignTool, um die Katalogdatei CatalogFileName.cat der Systemkomponentendatenbank (Treiberdatenbank) hinzuzufügen. Mit der Option /v wird SignTool so konfiguriert, dass es im ausführlichen Modus ausgeführt wird, und die Option /u konfiguriert SignTool so, dass bei Bedarf ein eindeutiger Name für die hinzugefügte Katalogdatei generiert wird, um das Ersetzen einer bereits vorhandenen Katalogdatei mit demselben Namen wie CatalogFileName.cat zu verhindern.

SignTool catdb /v /u CatalogFileName.cat