SignTool
SignTool ist ein Befehlszeilentool, das Dateien digital signiert, die Signaturen in Dateien überprüft und Zeitstempeldateien erstellt. Informationen dazu, warum Das Signieren von Dateien wichtig ist, finden Sie unter Einführung in die Codesignatur.
Das Tool wird im Ordner \Bin des Microsoft Windows Software Development Kit (SDK)-Installationspfads installiert, z. B. C:\Programme (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe.
SignTool ist als Teil des Windows SDK verfügbar, das Sie aus dem Windows SDK herunterladen können.
Hinweis
Für Windows 10 SDK, Windows 10 HLK, Windows 10 WDK und Windows 10 ADK-Builds 20236 und höher müssen Sie den Digestalgorithmus angeben. Der SignTool-Befehl sign
erfordert die Option "Datei digestalgorithmus" (/fd
) und die Option "Zeitstempel-Digestalgorithmus" (/td
) während der Signatur bzw. des Zeitstempels.
Wenn /fd
während der Signatur nicht angegeben und während /td
des Zeitstempels nicht angegeben wird, löst der Befehl zunächst eine Warnung aus, Fehlercode 0. In höheren Versionen von SignTool wird die Warnung zu einem Fehler. Wir empfehlen SHA256. Es gilt in der Branche als sicherer als SHA1.
Syntax
signtool [command] [options] [file_name | ...]
Parameter
Argument | BESCHREIBUNG |
---|---|
command |
Einer von vier Befehlen, der einen Vorgang angibt, der für eine Datei ausgeführt werden soll: catdb , sign , timestamp oder verify . In der folgenden Tabelle finden Sie eine Beschreibung der einzelnen Befehle. |
options |
Eine Option, die einen Befehl ändert. Neben der globalen /q -Option und /v -Option wird von jedem Befehl ein eindeutiger Satz von Optionen unterstützt. |
file_name |
Der Pfad zu einer zu signierenden Datei. |
SignTool unterstützt die folgenden Befehle:
Get-Help | Beschreibung |
---|---|
catdb |
Fügt einer Katalogdatenbank eine Katalogdatei hinzu oder entfernt sie daraus. Katalogdatenbanken werden für die automatische Suche von Katalogdateien verwendet und mit einer GUID gekennzeichnet. Eine Liste der vom catdb Befehl unterstützten Optionen finden Sie unter catdb-Befehlsoptionen. |
sign |
Signiert Dateien digital. Digitale Signaturen schützen Dateien vor Manipulationen und ermöglichen es Benutzern, den Signierer anhand eines Signaturzertifikats zu überprüfen. Eine Liste der optionen, die sign vom Befehl unterstützt werden, finden Sie unter Optionen für den Signierenbefehl. |
timestamp |
Zeitstempeldateien. Eine Liste der vom timestamp Befehl unterstützten Optionen finden Sie unter Zeitstempelbefehlsoptionen. |
verify |
Überprüft die digitale Signatur von Dateien. Bestimmt, ob das Signaturzertifikat von einer vertrauenswürdigen Behörde ausgestellt wurde, ob das Signaturzertifikat widerrufen wurde und optional, ob das Signaturzertifikat für eine bestimmte Richtlinie gültig ist. Eine Liste der vom Befehl unterstützten Optionen finden Sie unter Überprüfen der verify Befehlsoptionen. |
Die folgenden Optionen gelten für alle SignTool-Befehle.
Globale Option | Beschreibung |
---|---|
/q |
Bei erfolgreicher Ausführung des Befehls erfolgt keine Ausgabe, bei einen Fehler werden minimale Daten ausgegeben |
/v |
Zeigt unabhängig von der erfolgreichen Ausführung des Befehls eine ausführliche Ausgabe und Warnmeldungen an. |
/debug |
Zeigt Debuginformationen an. |
Catdb-Befehlsoptionen
In der folgenden Tabelle werden die Optionen aufgeführt, die mit dem catdb
-Befehl verwendet werden können.
Catdb-Option | Beschreibung |
---|---|
/d |
Gibt an, dass die Standardkatalogdatenbank aktualisiert wird. Wenn Sie weder oder verwenden /d /g , aktualisiert SignTool die Systemkomponente und die Treiberdatenbank. |
/g GUID |
Gibt an, dass die durch die GUID identifizierte Katalogdatenbank aktualisiert wird. |
/r |
Entfernt den angegebenen Katalog aus der Katalogdatenbank. Wenn diese Option nicht angegeben ist, fügt SignTool den angegebenen Katalog der Katalogdatenbank hinzu. |
/u |
Gibt an, dass automatisch ein eindeutiger Name für die hinzugefügten Katalogdateien generiert wird. Ggf. werden die Katalogdateien umbenannt, um Namenskonflikte mit vorhandenen Katalogdateien zu verhindern. Wenn diese Option nicht angegeben ist, überschreibt SignTool jeden vorhandenen Katalog, der denselben Namen wie der angegebene Katalog hat. |
Hinweis
Katalogdatenbanken werden für das automatische Suchen von Katalogdateien verwendet.
Sign-Befehlsoptionen
In der folgenden Tabelle werden die Optionen aufgeführt, die mit dem sign
-Befehl verwendet werden können.
Sign-Befehlsoption | Beschreibung |
---|---|
/a |
Wählt automatisch das beste Signaturzertifikat aus. SignTool findet alle gültigen Zertifikate, die alle angegebenen Bedingungen erfüllen, und wählt das Zertifikat aus, das für die längste Zeit gültig ist. Wenn diese Option nicht vorhanden ist, erwartet SignTool, dass nur ein gültiges Signaturzertifikat gefunden wird. |
/ac datei |
Fügt dem Signaturblock ein weiteres Zertifikat aus der Datei hinzu. |
/as |
Fügt diese Signatur an. Wenn keine primäre Signatur vorhanden ist, wird diese Signatur stattdessen zur primären Signatur gemacht. |
/c ZertVorlagenname |
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 Beschr |
Gibt eine Beschreibung des signierten Inhalts an. |
/dg Pfad |
Generiert den zu signierten Digest und die nicht signierten PKCS7-Dateien. Die Ausgabe-Digest- und PKCS7-Dateien sind <Path>\<FileName.dig> und <Path>\<FileName.p7u>. Um eine zusätzliche XML-Datei auszugeben, verwenden Sie /dxml . |
/di Pfad |
Erstellt die Signatur, indem der signierte Digest in der nicht signierten PKCS7-Datei erfasst wird. Die eingabesignierten Digest- und nicht signierten PKCS7-Dateien sollten Path>\<FileName.dig.signed> und Path\FileName.p7u<>sein.<>< |
/dlib DLL |
Gibt die DLL an, die die AuthenticodeDigestSign Funktion zum Signieren des Digests implementiert. Diese Option entspricht der separaten Verwendung von SignTool mit den /dg Optionen , /ds und /di . Diese Option ruft alle drei als einen atomaren Vorgang auf. |
/dmdf Dateiname |
Wenn sie mit der /dg Option verwendet wird, übergibt der Inhalt der Datei ohne Änderung an die AuthenticodeDigestSign Funktion. |
/ds |
Signiert nur den Digest. Die Eingabedatei sollte der von der /dg Option generierte Digest sein. Die Ausgabedatei lautet: <File.signed>. |
/du URL |
Gibt eine URL (Uniform Resource Locator) für die erweiterte Beschreibung des signierten Inhalts an. |
/dxml |
Erzeugt bei Verwendung mit der /dg Option eine XML-Datei. Die Ausgabedatei lautet: <Path>\<FileName>.dig.xml. |
/f SignZertDatei |
Gibt das Signaturzertifikat in einer Datei an. Wenn die Datei im PFX-Format (Personal Information Exchange) vorliegt und mit einem Kennwort gesichert ist, verwenden Sie zur Angabe des Kennworts die /p -Option. Wenn die Datei keine privaten Schlüssel enthält, verwenden Sie die /csp Optionen und /kc , um den Containernamen für den CSP und den privaten Schlüssel anzugeben. |
/fd alg |
Gibt den Dateihashwertalgorithmus zum Erstellen von Dateisignaturen an. Hinweis: Wenn die /fd Option beim Signieren nicht angegeben wird, generiert der Befehl einen Fehler. |
/fd certHash |
Die Angabe der Zeichenfolge "certHash" bewirkt, dass der Befehl den algorithmus verwendet, der im Signaturzertifikat angegeben ist. Hinweis: Wenn die /fd Option beim Signieren nicht angegeben wird, generiert der Befehl einen Fehler. |
/i Ausstellername |
Gibt den Namen des Ausstellers des Signaturzertifikats an. Dieser Wert kann eine Teilzeichenfolge des gesamten Ausstellernamens sein. |
/kc ContainernameprivaterSchlüssel |
Gibt den Namen des privaten Schlüsselcontainers an. |
/n Antragstellername |
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. Der Standardwert wird durch die umgebungsvariable SIGNTOOL_PAGE_HASHES und die 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. Verwenden Sie die /f Option, um eine PFX-Datei anzugeben. |
/p7 Pfad |
Gibt an, dass für jede ausgewählte Inhaltsdatei eine PKCS #7-Datei (Public Key Cryptography Standards) erstellt wird. PKCS #7-Dateien haben den Namen <path>\<filename.p7>. |
/p7ce Value |
Gibt Optionen für den signierten PKCS #7-Inhalt an. Legen Sie Wert auf fest Embedded , um den signierten Inhalt in die PKCS #7-Datei einzubetten oder den DetachedSignedData signierten Datenteil einer getrennten PKCS #7-Datei zu erstellen. Wenn die /p7ce Option nicht angegeben ist, wird der signierte Inhalt standardmäßig eingebettet. |
/p7co <OID> |
Gibt den Objektbezeichner (OID) zur Identifizierung des signierten PKCS #7-Inhalts an. |
/ph |
Wenn unterstützt, werden Seitenhashes für ausführbare Dateien generiert. |
/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 Speichername |
Gibt den Speicher an, der geöffnet werden soll, wenn der Befehl nach dem Zertifikat sucht. Wenn diese Option nicht angegeben ist, öffnet der Befehl den My Speicher. |
/sha1 Hash |
Gibt den SHA1-Hash des Signaturzertifikats an. Der SHA1-Hash wird häufig verwendet, wenn mehrere Zertifikate die in den verbleibenden Optionen angegebenen Kriterien erfüllen. |
/sm |
Gibt an, dass der Befehl einen Computerspeicher anstelle eines Benutzerspeichers verwendet. |
/t URL |
Gibt die URL des Zeitstempelservers an. Wenn diese Option oder /tr nicht angegeben ist, wird die signierte Datei nicht mit einem Zeitstempel versehen. Wenn beim Zeitstempeln ein Fehler auftritt, generiert der Befehl eine Warnung. Diese Option kann nicht mit der /tr Option verwendet werden. |
/td alg |
Wird mit der /tr -Option zum Anfordern eines vom RFC 3161-Zeitstempelserver verwendeten Digestalgorithmus genutzt. Hinweis: Wenn /td beim Zeitstempeln nicht angegeben wird, generiert der Befehl einen Fehler. |
/tr URL |
Gibt die URL des RFC 3161-Zeitstempelservers an. Wenn diese Option oder /t nicht angegeben ist, wird die signierte Datei nicht mit einem Zeitstempel versehen. Wenn die Zeitstempelung fehlschlägt, generiert der Befehl eine Warnung. Diese Option kann nicht mit der /t Option 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 ist Code Signing oder 1.3.6.1.5.5.7.3.3 . |
/uw |
Gibt die Verwendung von oder 1.3.6.1.4.1.311.10.3.6 anWindows System Component Verification . |
Verwendungsbeispiele finden Sie unter Using SignTool to Sign a File (Signieren einer Datei mit SignTool).
Timestamp-Befehlsoptionen
In der folgenden Tabelle werden die Optionen aufgeführt, die mit dem timestamp
-Befehl verwendet werden können.
Timestamp-Option | Beschreibung |
---|---|
/p7 |
Fügt PKCS #7-Dateien Zeitstempel hinzu. |
/t URL |
Gibt die URL des Zeitstempelservers an. Vor dem Hinzufügen eines Zeitstempels muss die jeweilige Datei signiert werden. Entweder die /t -Option oder die /tr -Option ist erforderlich. |
/td alg |
Wird mit der /tr -Option zum Anfordern eines vom RFC 3161-Zeitstempelserver verwendeten Digestalgorithmus genutzt. Hinweis: Wenn /td beim Zeitstempeln nicht angegeben wird, generiert der Befehl eine Warnung. |
/tp index |
Fügt der Signatur bei Index einen Zeitstempel hinzu |
/tr URL |
Gibt die URL des RFC 3161-Zeitstempelservers an. Vor dem Hinzufügen eines Zeitstempels muss die jeweilige Datei signiert werden. Entweder die /tr -Option oder die /t -Option ist erforderlich. |
Überprüfen der Befehlsoptionen
"Verify"-Option | Beschreibung |
---|---|
/a |
Gibt an, dass alle Methoden zum Überprüfen der Datei verwendet werden können. Zunächst durchsucht SignTool die Katalogdatenbanken, um zu ermitteln, ob die Datei in einem Katalog signiert ist. Wenn die Datei in keinem Katalog angemeldet ist, versucht SignTool, die eingebettete Signatur der Datei zu überprüfen. Wir empfehlen diese Option, wenn Dateien überprüft werden, die möglicherweise in einem Katalog angemeldet sind oder nicht. Beispiele für Dateien, die signiert werden können oder nicht, sind Windows-Dateien oder -Treiber. |
/ad |
Sucht den Katalog in der Standardkatalogdatenbank. |
/all |
Überprüft alle Signaturen in einer Datei mit mehreren Signaturen. |
/as |
Sucht den Katalog in der Katalogdatenbank der Systemkomponenten (Treiber). |
/ag CatDBGUID |
Sucht den Katalog in der Katalogdatenbank, die von der GUID identifiziert wird. |
/c CatFile |
Gibt die Katalogdatei anhand des Namens an. |
/d |
Gibt die Beschreibung und die Beschreibungs-URL aus. Windows Vista und früher: Diese Option wird nicht unterstützt. |
/ds Index |
Überprüft die Signatur an einer bestimmten Position. |
/hash {SHA1|SHA256} |
Gibt einen optionalen Hashalgorithmus zum Suchen einer Datei in einem Katalog an. |
/kp |
Führt die Überprüfung mithilfe der Signaturrichtlinie für x64-Kernelmodustreiber aus. |
/ms |
Verwendet mehrere Überprüfungssemantiken. Dieses Verhalten ist die Standardeinstellung eines WinVerifyTrust-Aufrufs . |
/o Version |
Überprüft die Datei anhand der Betriebssystemversion. Der Versionsparameter hat die Folgende: <PlatformID>:<VerMajor>.< VerMinor>.< BuildNumber>. Wir empfehlen die Verwendung der /o Option. Wenn /o nicht angegeben ist, gibt SignTool möglicherweise unerwartete Ergebnisse zurück. Wenn Sie beispielsweise nicht einschließen /o , 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. SignTool überprüft die Signatur und erstellt eine Kette für das Signaturzertifikat. |
/pa |
Gibt an, dass die Standardauthentifizierungsüberprüfungsrichtlinie verwendet wird. Wenn die /pa Option nicht angegeben ist, verwendet SignTool die Windows-Treiberüberprüfungsrichtlinie. Diese Option kann nicht mit den catdb Optionen verwendet werden. |
/pg PolicyGUID |
Gibt eine Überprüfungsrichtlinie nach GUID an. Die GUID entspricht der ActionID der Überprüfungsrichtlinie. Diese Option kann nicht mit den catdb Optionen verwendet werden. |
/ph |
Drucken und Überprüfen von Seitenhashwerten. Windows Vista und früher: Diese Option wird nicht unterstützt. |
/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 der Befehl eine Warnung generiert, wenn die Signatur nicht zeitstempelt ist. |
Der Befehl SignTool verify
bestimmt, ob das Signaturzertifikat von einer vertrauenswürdigen Stelle ausgestellt wurde, ob das Signaturzertifikat widerrufen wurde und optional, ob das Signaturzertifikat für eine bestimmte Richtlinie gültig ist.
Der Befehl SignTool verify
gibt die eingebettete Signatur status aus, es sei denn, es wird eine Option zum Durchsuchen eines Katalogs angegeben, z/a
. B. , /ad
, /as
, /ag
oder /c
.
Rückgabewert
SignTool gibt einen der folgenden Exitcodes zurück, wenn es beendet wird.
Exitcode | BESCHREIBUNG |
---|---|
0 | Ausführung war erfolgreich. |
1 | Ausführung ist fehlgeschlagen. |
2 | Ausführung wurde mit Warnungen abgeschlossen. |
Beispiele
Mit dem folgenden Befehl wird die Katalogdatei MyCatalogFileName.cat der Systemkomponente und treiberdatenbank hinzugefügt. Die /u
Option generiert bei Bedarf einen eindeutigen Namen, um das Ersetzen einer vorhandenen Katalogdatei mit dem Namen MyCatalogFileName.cat zu verhindern.
signtool catdb /v /u MyCatalogFileName.cat
Durch den folgenden Befehl wird eine Datei automatisch mit dem besten Zertifikat signiert.
signtool sign /a /fd SHA256 MyFile.exe
Durch den folgenden Befehl wird eine Datei mit einem in einer kennwortgeschützten PFX-Datei gespeicherten Zertifikat digital signiert.
signtool sign /f MyCert.pfx /p MyPassword /fd SHA256 MyFile.exe
Mit dem folgenden Befehl wird eine Datei digital signiert und zeitstempelt. Das zum Signieren der Datei verwendete Zertifikat ist in einer PFX-Datei gespeichert.
signtool sign /f MyCert.pfx /t http://timestamp.digicert.com /fd SHA256 MyFile.exe
Durch den folgenden Befehl wird eine Datei mit einem Zertifikat aus dem My
-Speicher signiert, das den Antragstellernamen My Company Certificate
aufweist.
signtool sign /n "My Company Certificate" /fd SHA256 MyFile.exe
Der folgende Befehl signiert ein ActiveX-Steuerelement und stellt Informationen bereit, die in einem Browser angezeigt werden, wenn der Benutzer zur Installation des Steuerelements aufgefordert wird.
signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html /fd SHA256 MyControl.exe
Mit dem folgenden Befehlszeitpunkt wird eine Datei gestempelt, die bereits digital signiert wurde.
signtool timestamp /t http://timestamp.digicert.com MyFile.exe
Der folgende Befehl zeitstempelt eine Datei mit einem RFC 3161-Zeitstempelserver.
signtool timestamp /tr http://timestamp.digicert.com /td SHA256 MyFile.exe
Durch den folgenden Befehl wird überprüft, ob eine Datei signiert wurde.
signtool verify MyFile.exe
Mit dem folgenden Befehl wird eine Systemdatei überprüft, die in einem Katalog signiert werden kann.
signtool verify /a SystemFile.dll
Durch den folgenden Befehl wird eine Systemdatei überprüft, die in einem Katalog mit dem Namen MyCatalog.cat
signiert ist.
signtool verify /c MyCatalog.cat SystemFile.dll
Feedback
Feedback senden und anzeigen für