SignTool.exe (teckenverktyg)
Sign Tool är ett kommandoradsverktyg som digitalt signerar filer, verifierar signaturer i filer och tidsstämplar.
Det här verktyget installeras automatiskt med Visual Studio. Om du vill köra verktyget använder du Visual Studio Developer Command Prompt eller Visual Studio Developer PowerShell.
Kommentar
Windows 10 SDK, Windows 10 HLK, Windows 10 WDK och Windows 10 ADK bygger 20236 och kräver senare att du anger algoritmen för sammandrag. SignTool-kommandot sign
kräver att algoritmen /fd
för filsammandrag och tidsstämpelns /td
sammandragsalgoritm anges under signering respektive tidsstämpling. Ett fel (felkod 1) utlöses om /fd
det inte anges under signeringen och om /td
det inte anges under tidsstämpling.
Skriv följande vid kommandotolken:
Syntax
signtool [command] [options] [file_name | ...]
Parametrar
Argument | beskrivning |
---|---|
command |
Ett av fyra kommandon (catdb , sign , Timestamp , eller Verify ) som anger en åtgärd som ska utföras på en fil. En beskrivning av varje kommando finns i nästa tabell. |
options |
Ett alternativ som ändrar ett kommando. Förutom de globala /q alternativen och /v alternativen har varje kommando stöd för en unik uppsättning alternativ. |
file_name |
Sökvägen till en fil som ska signeras. |
Följande kommandon stöds av teckenverktyget. Varje kommando används med distinkta uppsättningar med alternativ, som visas i respektive avsnitt.
Kommando | beskrivning |
---|---|
catdb |
Lägger till en katalogfil i eller tar bort den från en katalogdatabas. Katalogdatabaser används för automatisk sökning av katalogfiler och identifieras av GUID. En lista över de alternativ som stöds av kommandot finns i catdb catdb-kommandoalternativ. |
sign |
Signerar filer digitalt. Digitala signaturer skyddar filer från manipulering och gör det möjligt för användare att verifiera undertecknaren baserat på ett signeringscertifikat. En lista över de alternativ som stöds av kommandot finns i sign signera kommandoalternativ. |
Timestamp |
Tidsstämplar filer. En lista över de alternativ som stöds av kommandot finns i TimeStamp TimeStamp-kommandoalternativ. |
Verify |
Verifierar den digitala signaturen för filer genom att avgöra om signeringscertifikatet har utfärdats av en betrodd utfärdare, om signeringscertifikatet har återkallats och eventuellt om signeringscertifikatet är giltigt för en specifik princip. En lista över de alternativ som stöds av kommandot finns i Verify Verifiera kommandoalternativ. |
Följande alternativ gäller för alla sign tool-kommandon.
Globalt alternativ | beskrivning |
---|---|
/q | Visar inga utdata om kommandot körs och visar minimala utdata om kommandot misslyckas. |
/v | Visar utförliga utdata oavsett om kommandot körs eller misslyckas och visar varningsmeddelanden. |
/felsöka | Visar felsökningsinformation. |
catdb-kommandoalternativ
I följande tabell visas de alternativ som kan användas med catdb
kommandot .
Catdb-alternativ | beskrivning |
---|---|
/d |
Anger att standardkatalogdatabasen uppdateras. Om varken /d alternativet eller /g används uppdaterar Sign Tool systemkomponenten och drivrutinsdatabasen. |
/g GUID |
Anger att katalogdatabasen som identifieras av det globalt unika identifierar-GUID :et uppdateras. |
/r |
Tar bort de angivna katalogerna från katalogdatabasen. Om det här alternativet inte har angetts lägger Sign Tool till de angivna katalogerna i katalogdatabasen. |
/u |
Anger att ett unikt namn genereras automatiskt för de tillagda katalogfilerna. Om det behövs byter katalogfilerna namn för att förhindra namnkonflikter med befintliga katalogfiler. Om det här alternativet inte har angetts skriver Sign Tool över alla befintliga kataloger som har samma namn som katalogen som läggs till. |
signera kommandoalternativ
I följande tabell visas de alternativ som kan användas med sign
kommandot .
Kommandoalternativet Signera | beskrivning |
---|---|
/a |
Väljer automatiskt det bästa signeringscertifikatet. Sign Tool hittar alla giltiga certifikat som uppfyller alla angivna villkor och väljer det som är giltigt under den längsta tiden. Om det här alternativet inte finns förväntar sig Sign Tool att endast hitta ett giltigt signeringscertifikat. |
/ac fil |
Lägger till ytterligare ett certifikat från filen i signaturblocket. |
/as |
Lägger till signaturen. Om det inte finns någon primär signatur görs den här signaturen till den primära signaturen i stället. |
/c CertTemplateName |
Anger certifikatmallens namn (ett Microsoft-tillägg) för signeringscertifikatet. |
/csp CSPName |
Anger den kryptografiska tjänstprovider (CSP) som innehåller containern för privat nyckel. |
/d Desc |
Anger en beskrivning av det signerade innehållet. |
/du URL |
Anger en url (Uniform Resource Locator) för den utökade beskrivningen av det signerade innehållet. |
/f SignCertFile |
Anger signeringscertifikatet i en fil. Om filen är i PFX-format (Personal Information Exchange) och skyddas av ett lösenord använder du /p alternativet för att ange lösenordet. Om filen inte innehåller privata nycklar använder du /csp alternativen och /kc för att ange containernamnet csp och privat nyckel. |
/fd |
Anger den algoritm för filsammandrag som ska användas för att skapa filsignaturer. Not: Ett fel genereras om växeln /fd inte anges under signeringen. |
/fd certHash |
Om du anger strängcertifikatetHash används som standard den algoritm som används på signeringscertifikatet. Not: Ett fel genereras om växeln /fd inte anges under signeringen. |
/i IssuerName |
Anger namnet på utfärdaren av signeringscertifikatet. Det här värdet kan vara en delsträng av hela utfärdarnamnet. |
/kc PrivKeyContainerName |
Anger containernamnet för den privata nyckeln. |
/n SubjectName |
Anger namnet på ämnet för signeringscertifikatet. Det här värdet kan vara en delsträng av hela ämnesnamnet. |
/nph |
Om det stöds undertrycks sidhashvärden för körbara filer. Standardvärdet bestäms av miljövariabeln SIGNTOOL_PAGE_HASHES och av wintrust.dll version. Det här alternativet ignoreras för icke-PE-filer. |
/p Lösenord |
Anger lösenordet som ska användas när du öppnar en PFX-fil. (Använd alternativet /f för att ange en PFX-fil.) |
/p7 Stig |
Anger att en PKCS-fil (Public Key Cryptography Standards) #7 skapas för varje angiven innehållsfil. PKCS #7-filer heter path\filename.p7. |
/p7ce Värde |
Anger alternativ för det signerade PKCS #7-innehållet. Ange Värde till "Embedded" för att bädda in det signerade innehållet i PKCS #7-filen eller till "DetachedSignedData" för att skapa den signerade datadelen av en fristående PKCS #7-fil. Om alternativet /p7ce inte används bäddas det signerade innehållet in som standard. |
/p7co <OID> |
Anger den objektidentifierare (OID) som identifierar det signerade PKCS #7-innehållet. |
/ph |
Om det stöds genererar sidan hashvärden för körbara filer. |
/r RootSubjectName |
Anger namnet på ämnet för rotcertifikatet som signeringscertifikatet måste länka till. Det här värdet kan vara en delsträng av hela ämnesnamnet för rotcertifikatet. |
/s StoreName |
Anger vilket arkiv som ska öppnas när du söker efter certifikatet. Om det här alternativet inte har angetts öppnas arkivet My . |
/sha1 Hasch |
Anger SHA1-hashen för signeringscertifikatet. SHA1-hashen anges ofta när flera certifikat uppfyller de kriterier som anges av de återstående växlarna. |
/sm |
Anger att ett datorlager, i stället för ett användararkiv, används. |
/t URL |
Anger URL:en för tidsstämpelservern. Om det här alternativet (eller /tr ) inte finns kommer den signerade filen inte att vara tidsstämplad. En varning genereras om tidsstämpling misslyckas. Det här alternativet kan inte användas med alternativet /tr . |
/td Alg |
Används med /tr alternativet att begära en sammandragsalgoritm som används av RFC 3161-tidsstämpelservern. Not: Ett fel genereras om /td det inte anges under tidsstämpling. |
/tr URL |
Anger URL:en för RFC 3161-tidsstämpelservern. Om det här alternativet (eller /t ) inte finns kommer den signerade filen inte att vara tidsstämplad. En varning genereras om tidsstämpling misslyckas. Det här alternativet kan inte användas med alternativet /t . |
/u Användning |
Anger den förbättrade nyckelanvändningen (EKU) som måste finnas i signeringscertifikatet. Användningsvärdet kan anges med OID eller sträng. Standardanvändningen är "Kodsignering" (1.3.6.1.5.5.7.3.3). |
/uw |
Anger användningen av "Windows System Component Verification" (1.3.6.1.4.1.311.10.3.6). |
Användningsexempel finns i Använda SignTool för att signera en fil.
Kommandoalternativ för TimeStamp
I följande tabell visas de alternativ som kan användas med TimeStamp
kommandot .
TimeStamp-alternativ | beskrivning |
---|---|
/p7 |
Tidsstämplar PKCS #7-filer. |
/t URL |
Anger URL:en för tidsstämpelservern. Filen som tidsstämplas måste ha signerats tidigare. /t Antingen krävs alternativet eller/tr . |
/td Alg |
Används med /tr alternativet att begära en sammandragsalgoritm som används av RFC 3161-tidsstämpelservern. Not: Ett fel genereras om /td det inte anges under tidsstämpling. |
/tp index |
Tid stämplar signaturen vid index. |
/tr URL |
Anger URL:en för RFC 3161-tidsstämpelservern. Filen som tidsstämplas måste ha signerats tidigare. /tr Antingen krävs alternativet eller/t . |
Ett användningsexempel finns i Lägga till tidsstämplar till tidigare signerade filer.
Verifiera kommandoalternativ
Alternativet Verifiera | beskrivning |
---|---|
/a |
Anger att alla metoder kan användas för att verifiera filen. Först genomsöks katalogdatabaserna för att avgöra om filen är inloggad i en katalog. Om filen inte är inloggad i någon katalog försöker sign tool verifiera filens inbäddade signatur. Det här alternativet rekommenderas när du verifierar filer som kanske inte är inloggade i en katalog. Exempel på dessa filer är Windows-filer eller -drivrutiner. |
/ad |
Söker efter katalogen med hjälp av standardkatalogdatabasen. |
/ag CatDBGUID |
Hittar katalogen i katalogdatabasen som identifieras av CatDBGUID. |
/all |
Verifierar alla signaturer i en fil som innehåller flera signaturer. |
/as |
Söker efter katalogen med hjälp av katalogdatabasen för systemkomponenten (drivrutinen). |
/c CatFile |
Anger katalogfilen efter namn. |
/d |
Anger att sign tool ska skriva ut beskrivningen och beskrivnings-URL:en. |
/ds Index |
Verifierar signaturen på en angiven position. |
/hash (SHA1 |SHA256 ) |
Anger en valfri hash-algoritm som ska användas när du söker efter en fil i en katalog. |
/kp |
Anger att verifieringen ska utföras med principen för drivrutinssignering i kernelläge. |
/ms |
Använder flera verifieringssemantik. Detta är standardbeteendet för ett WinVerifyTrust-anrop i Windows 8 och senare. |
/o Version |
Verifierar filen efter operativsystemversion. Versionen har följande formulär: PlatformID:VerMajor.VerMinor.BuildNumber. PlatformID representerar det underliggande värdet för en PlatformID uppräkningsmedlem. Viktigt: Användning av växeln /o rekommenderas. Om /o inte anges kan SignTool.exe returnera oväntade resultat. Om du till exempel inte inkluderar växeln /o kanske systemkataloger som verifierar korrekt på ett äldre operativsystem inte verifieras korrekt på ett nyare operativsystem. |
/p7 |
Verifierar PKCS #7-filer. Inga befintliga principer används för PKCS #7-validering. Signaturen är markerad och en kedja skapas för signeringscertifikatet. |
/pa |
Anger att standardprincipen för verifiering av authenticode ska användas. Om alternativet /pa inte har angetts använder sign tool windows-drivrutinsverifieringsprincipen. Det här alternativet kan inte användas med catdb alternativen. |
/pg PolicyGUID |
Anger en verifieringsprincip efter GUID. PolicyGUID motsvarar Verifieringsprincipens ActionID. Det här alternativet kan inte användas med catdb alternativen. |
/ph |
Anger att teckenverktyget ska skriva ut och verifiera sidhashvärden. |
/r RootSubjectName |
Anger namnet på ämnet för rotcertifikatet som signeringscertifikatet måste länka till. Det här värdet kan vara en delsträng av hela ämnesnamnet för rotcertifikatet. |
/tw |
Anger att en varning ska genereras om signaturen inte är tidsstämplad. |
Användningsexempel finns i Använda SignTool för att verifiera en filsignatur.
Returvärde
Sign Tool returnerar någon av följande slutkoder när den avslutas.
Slutkod | beskrivning |
---|---|
0 | Körningen lyckades. |
1 | Körningen misslyckades. |
2 | Körningen har slutförts med varningar. |
Exempel
Följande kommando lägger till katalogfilen MyCatalogFileName.cat till systemkomponenten och drivrutinsdatabasen. Alternativet /u
genererar ett unikt namn om det behövs för att förhindra att en befintlig katalogfil med namnet ersätts MyCatalogFileName.cat
.
signtool catdb /v /u MyCatalogFileName.cat
Följande kommando signerar en fil automatiskt med hjälp av det bästa certifikatet.
signtool sign /a /fd SHA256 MyFile.exe
Följande kommando signerar en fil digitalt med hjälp av ett certifikat som lagras i en lösenordsskyddad PFX-fil.
signtool sign /f MyCert.pfx /p MyPassword /fd SHA256 MyFile.exe
Följande kommando signerar och tidsstämplar en fil digitalt. Certifikatet som används för att signera filen lagras i en PFX-fil.
signtool sign /f MyCert.pfx /t http://timestamp.digicert.com /fd SHA256 MyFile.exe
Följande kommando signerar en fil med hjälp av ett certifikat som finns i arkivet My
som har ämnesnamnet My Company Certificate
.
signtool sign /n "My Company Certificate" /fd SHA256 MyFile.exe
Följande kommando signerar en ActiveX-kontroll och innehåller information som visas i webbläsaren när användaren uppmanas att installera kontrollen.
Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html /fd SHA256 MyControl.exe
Följande kommando tidsstämplar en fil som redan har signerats digitalt.
signtool timestamp /t http://timestamp.digicert.com MyFile.exe
Följande kommando tidsstämplar en fil med hjälp av en RFC 3161-tidsstämpelserver.
signtool timestamp /tr http://timestamp.digicert.com /td SHA256 MyFile.exe
Följande kommando verifierar att en fil har signerats.
signtool verify MyFile.exe
Följande kommando verifierar en systemfil som kan vara inloggad i en katalog.
signtool verify /a SystemFile.dll
Följande kommando verifierar en systemfil som är inloggad i en katalog med namnet MyCatalog.cat
.
signtool verify /c MyCatalog.cat SystemFile.dll