SignTool.exe (nástroj pro podpis)

Sign Tool je nástroj příkazového řádku, který digitálně podepíše soubory, ověří podpisy v souborech a časová razítka souborů.

Tento nástroj je automaticky nainstalován se sadou Visual Studio. Ke spuštění tohoto nástroje použijte Visual Studio Developer Command Prompt nebo Visual Studio Developer PowerShell.

Poznámka

Sada Windows 10 SDK, Windows 10 HLK, Windows 10 WDK a Windows 10 ADK 20236 a novější vyžadují zadání algoritmu digest. Příkaz SignTool sign vyžaduje,/fd aby se /fdsign/td podepisování a časovém razítku zadal algoritmus hash souboru a algoritmus hash časového razítka. Pokud není během podepisování zadána chyba (kód chyby 1), /fd/td bude vyvolána, a pokud není zadána během časového razítka.

V příkazovém řádku zadejte následující:

Syntaxe

signtool [command] [options] [file_name | ...]  

Parametry

Argument Popis
command Jeden ze čtyř příkazů (catdb, sign, Timestampnebo Verify), který určuje operaci, která se má se souborem provést. Popis jednotlivých příkazů naleznete v následující tabulce.
options Volba, která upravuje příkaz. Kromě globálních možností /q/v a každý příkaz podporuje jedinečnou sadu možností.
file_name Cesta k souboru, který chcete podepsat.

Následující příkazy jsou podporovány nástrojem Sign Tool. Každý příkaz se používá s různou sadou možností, které jsou uvedeny v příslušných oddílech.

Příkaz Popis
catdb Přidá nebo odebere soubor katalogu z databáze katalogů. Databáze katalogů slouží k automatickému vyhledávání souborů katalogu a jsou označeny identifikátorem GUID. Seznam možností podporovaných příkazem catdb najdete v tématu možnosti catdb.
sign Digitálně podepíše soubory. Digitální podpisy chrání soubory před neoprávněnými změnami a umožňují uživatelům ověřit podpis na základě podpisového certifikátu. Seznam možností podporovaných příkazem sign najdete v tématu sign.
Timestamp Opatří soubory časovým razítkem. Seznam možností podporovaných příkazem TimeStamp najdete v tématu TimeStamp.
Verify Ověří digitální podpis souborů stanovením, zda podpisový certifikát byl vydán důvěryhodnou autoritou, zda podpisový certifikát nebyl odvolán, a případně zda podpisový certifikát je platný pro konkrétní zásady. Seznam možností podporovaných příkazem Verify najdete v tématu Verify.

Tyto možnosti platí pro všechny příkazy nástroje pro podepisování.

Možnost Global Popis
/q Pokud se příkaz úspěšně spustí, nezobrazí se žádný výstup. Pokud se příkaz nezdaří, zobrazí se minimální výstup.
/v Zobrazí podrobný výstup bez ohledu na to, zda bude příkaz úspěšně spuštěn, nebo se nezdaří, a zobrazí upozornění.
/debug Zobrazí informace o ladění.

Možnosti příkazu catdb

Následující tabulka uvádí možnosti, které lze použít s příkazem catdb .

Možnost Catdb Popis
/d Určuje, že výchozí databáze katalogů je aktualizována. Pokud se možnost /d ani /g nepouží, nástroj Sign Tool aktualizuje systémovou komponentu a databázi ovladačů.
/g/g Určuje, že databáze katalogu identifikované globálně jedinečný identifikátor GUID je aktualizován.
/r Odebere zadané katalogy z databáze katalogů. Pokud není tato možnost zadána, nástroj Sign Tool přidá určené katalogy do databáze katalogů.
/u Určuje, že přidaným souborům katalogu bude přiřazen jedinečný název. V případě potřeby jsou soubory katalogu přejmenovány, aby se předešlo konfliktům názvů s existujícími soubory katalogu. Pokud není tato možnost zadána, přepíše nástroj Sign Tool jakýkoli existující katalog, který má stejný název jako přidávaný katalog.

Možnosti příkazu sign

Následující tabulka uvádí možnosti, které lze použít s příkazem sign .

Možnost příkazu sign Popis
/a Automaticky vybere nejlepší podpisový certifikát. Nástroj Sign Tool vyhledá všechny platné certifikáty, které splňují všechny zadané podmínky, a vybere ten, který je platný pro co nejdelší dobu. Pokud tato možnost není k dispozici, očekává nástroj Sign Tool pouze jeden platný podpisový certifikát.
/ac/ac Přidá další certifikát ze souboru do bloku podpisu.
/as Připojí tento podpis. Pokud neexistuje žádný primární podpis, tento podpis se stane primárním podpisem.
/c/c Určuje název šablony certifikátu (rozšíření Microsoft) pro podpisový certifikát.
/csp/csp Určuje poskytovatele CSP (Cryptographic Service Provider), který obsahuje kontejner soukromého klíče.
/d/d Určuje popis podepsaného obsahu.
/du/du Určuje adresu URL (Uniform Resource Locator) pro rozšířený popis podepsaného obsahu.
/f/f Určuje podpisový certifikát v souboru. Pokud je soubor ve formátu PFX (Personal Information Exchange) a je chráněný heslem, /p použijte možnost k zadání hesla. Pokud soubor neobsahuje privátní klíče, /csp/kc pomocí možností a zadejte název kontejneru CSP a privátního klíče.
/fd Určuje soubor algoritmu digest pro vytváření podpisů souborů.

Pokud se přepínač během podepisování /fd nezadá, vygeneruje se chyba.
/fd/fd Zadáním řetězce certHash se standardně použije algoritmus použitý u podpisového certifikátu.

Pokud se přepínač během podepisování /fd nezadá, vygeneruje se chyba.
/i/i Určuje název vystavitele podpisového certifikátu. Tato hodnota může být podřetězec celého jména vystavitele.
/kc/kc Určuje název kontejneru soukromého klíče.
/n/n Určuje název předmětu podpisového certifikátu. Tato hodnota může být podřetězec celého názvu subjektu.
/nph V případě podpory potlačuje hodnoty hash stránek pro spustitelné soubory. Výchozí hodnota je určena proměnnou prostředí SIGNTOOL_PAGE_HASHES a verzí wintrust.dll. Tato možnost je ignorována pro soubory, které nejsou typu PE.
/p/p Určuje heslo, které má být použito při otevírání souboru PFX. (K určení /f souboru PFX použijte možnost .)
/p7/p7 Určuje, že soubor PKCS (Public Key Cryptography Standards) #7 je vytvořen pro každý zadaný soubor obsahu. Soubory PKCS #7 mají název cestafilename. P7.
/p7ce/p7ce Určuje volby pro podepsaný obsah PKCS #7. Nastavením hodnoty na "Embedded" vložte podepsaný obsah do souboru PKCS #7 nebo na "DetachedSignedData", čímž se vytvoří část podepsaného souboru PKCS #7 se znaménkem. /p7cePokud se možnost nepoužívá, bude ve výchozím nastavení vložen podepsaný obsah.
/p7co/p7co Určuje identifikátor objektu (OID), který identifikuje podepsaný obsah PKCS #7.
/ph V případě podpory generuje hodnoty hash stránek pro spustitelné soubory.
/r/r Určuje název předmětu kořenového certifikátu, jehož článkem musí podpisový certifikát být. Tato hodnota může být podřetězec celého názvu předmětu kořenového certifikátu.
/s/s Určuje úložiště k otevření při hledání certifikátu. Pokud není tato možnost zadána, My je úložiště otevřeno.
/sha1/sha1 Určuje algoritmus hash SHA1 podpisového certifikátu. Algoritmus hash SHA1 je obvykle použit, když více certifikátů splňuje kritéria stanovená ve zbývajících přepínačích.
/sm Určuje použití úložiště počítače namísto úložiště uživatele.
/t/t Určuje adresu URL časového razítka serveru. Pokud tato možnost (nebo /tr ) není k dispozici, nebude podepsaný soubor označen časovým razítkem. Pokud se opatření časovým razítkem nezdaří, vygeneruje se upozornění. Tuto možnost nelze použít s /tr možností.
/td/td Používá se s /tr možností pro vyžádání algoritmu Digest používaného serverem časového razítka RFC 3161.

Pokud /td není k dispozici časové razítko, je vygenerována chyba.
/tr/tr Určuje adresu URL časového razítka serveru RFC 3161. Pokud tato možnost (nebo /t ) není k dispozici, nebude podepsaný soubor označen časovým razítkem. Pokud se opatření časovým razítkem nezdaří, vygeneruje se upozornění. Tuto možnost nelze použít s /t možností.
/u/u Určuje použití rozšířeného klíče (EKU), který musí být součástí podpisového certifikátu. Hodnotu použití lze zadat pomocí OID nebo řetězce. Výchozí použití je „Podepisování kódu“ (1.3.6.1.5.5.7.3.3).
/uw Určuje použití „Ověřování součástí systému Windows“ (1.3.6.1.4.1.311.10.3.6).

Příklady použití najdete v tématu použití nástroje SignTool k podepsání souboru.

Možnosti příkazu TimeStamp

V následující tabulce jsou uvedeny možnosti, které lze použít s TimeStamp příkazem.

Možnost TimeStamp Popis
/p7 Opatří soubory PKCS #7 časovým razítkem.
/t/t Určuje adresu URL časového razítka serveru. Soubor, který má být opatřen časovým razítkem, musí být nejprve podepsán. /tJe vyžadována buď možnost, nebo /tr .
/td/td Používá se s /tr možností pro vyžádání algoritmu Digest používaného serverem časového razítka RFC 3161.

Pokud /td není k dispozici časové razítko, je vygenerována chyba.
/tp/tp Časová razítka signatury v indexu.
/tr/tr Určuje adresu URL časového razítka serveru RFC 3161. Soubor, který má být opatřen časovým razítkem, musí být nejprve podepsán. /trJe vyžadována buď možnost, nebo /t .

Příklad použití naleznete v tématu Přidání časových razítek do dříve podepsaných souborů.

Možnosti příkazu Verify

Možnost Verify Popis
/a Určuje, že všechny metody lze použít k ověření souboru. Nejprve se prohledají databáze katalogu a určí se, zda je soubor v katalogu podepsán. Pokud soubor není podepsán v žádném katalogu, nástroj Sign Tool se pokusí ověřit vložený podpis souboru. Tato možnost je doporučena při ověřování souborů, které mohou nebo nemusí být podepsány v katalogu. Mezi tyto soubory patří soubory systému Windows nebo ovladače.
/ad Vyhledá katalog pomocí výchozí databáze katalogu.
/ag/ag Vyhledá katalog v databázi katalogu, který je identifikovaný z CatDBGUID.
/all Ověří všechny podpisy v souboru, který obsahuje více podpisů.
/as Vyhledá v katalogu pomocí databáze katalogů systémovou komponentu (ovladač).
/c/c Určuje soubor katalogu podle názvu.
/d Určuje, že má nástroj Sign Tool vytisknout popis a adresu URL popisu.
/ds/ds Ověřuje podpis na určené pozici.
/hash (SHA1|SHA256) Určuje volitelný hashovací algoritmus k použití pro hledání souboru v katalogu.
/kp Určuje, že by mělo být provedeno ověření pomocí zásady podepisování ovladačů v režimu jádra.
/ms Používá několik sémantik pro ověřování. toto je výchozí chování volání funkce WinVerifyTrust na Windows 8 a výše.
/o/o Ověřuje soubor podle verze operačního systému. Verze má následující formát: PlatformID:VerMajor. Škůdce. BuildNumber. PlatformID představuje nadřazenou hodnotu člena výčtu. Důležité informace: Doporučuje se použít přepínač. Pokud /o parametr není zadán, SignTool.exe mohou vracet neočekávané výsledky. Pokud /o například přepínač nezadáte, systémové katalogy, které jsou správně ověřeny ve starším operačním systému, nemusí být správně ověřeny v novějším operačním systému.
/p7 Ověří soubory PKCS #7. Žádné existující zásady nejsou použity pro ověřování PKCS #7. Podpis je zkontrolován a řetězec je sestaven pro podpisový certifikát.
/pa Určuje, že mají být použity výchozí zásady ověření pomocí technologie Authenticode. /papokud možnost není zadána, nástroj Sign Tool použije zásady ověřování ovladače Windows. Tuto možnost nelze použít s catdb možnostmi.
/pg/pg Určuje zásady ověření podle identifikátoru GUID. PolicyGUID odpovídá ActionID zásad ověřování. Tuto možnost nelze použít s catdb možnostmi.
/ph Určuje, že nástroj Sign Tool má tisknout a ověřit hash hodnoty stránky.
/r/r Určuje název předmětu kořenového certifikátu, jehož článkem musí podpisový certifikát být. Tato hodnota může být podřetězec celého názvu předmětu kořenového certifikátu.
/tw Určuje, že by mělo být vygenerováno upozornění, pokud podpis nemá časové razítko.

Příklady použití najdete v tématu použití nástroje SignTool k ověření podpisu souboru.

Návratová hodnota

Nástroj Sign Tool vrátí jeden z následujících ukončovacích kódů při svém ukončení.

Ukončovací kód Popis
0 Spuštění proběhlo úspěšně.
1 Spuštění se nezdařilo.
2 Spuštění bylo dokončeno s varováními.

Příklady

Následující příkaz přidá soubor katalogu MyCatalogFileName.cat do systémové komponenty a databáze ovladačů. /uMožnost vygeneruje jedinečný název, pokud je to nutné, aby se zabránilo nahrazení existujícího souboru katalogu s názvem MyCatalogFileName.cat .

signtool catdb /v /u MyCatalogFileName.cat  

Následující příkaz podepíše soubor automaticky pomocí nejvhodnějšího certifikátu.

signtool sign /a /fd SHA256 MyFile.exe

Následující příkaz digitálně podepisuje soubor pomocí certifikátu uloženého v souboru PFX chráněném heslem.

signtool sign /f MyCert.pfx /p MyPassword /fd SHA256 MyFile.exe

Následující příkaz digitálně podepíše soubor a opatří ho časovým razítkem. Certifikát použitý k podepsání souboru je uložen v souboru PFX.

signtool sign /f MyCert.pfx /t http://timestamp.digicert.com /fd SHA256 MyFile.exe

Následující příkaz podepíše soubor pomocí certifikátu uloženého v My úložišti, který má název My Company Certificate subjektu.

signtool sign /n "My Company Certificate" /fd SHA256 MyFile.exe

Následující příkaz podepíše ovládací prvek ActiveX a poskytuje informace, které aplikace Internet Explorer zobrazí, když je uživatel vyzván k instalaci ovládacího prvku.

Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html /fd SHA256 MyControl.exe

Následující příkaz opatří digitálně podepsaný soubor časovým razítkem.

signtool timestamp /t http://timestamp.digicert.com MyFile.exe

Následující příkaz vyplní soubor pomocí časového razítka serveru RFC 3161.

signtool timestamp /tr http://timestamp.digicert.com /td SHA256 MyFile.exe

Následující příkaz ověří, že soubor byl podepsán.

signtool verify MyFile.exe  

Následující příkaz ověří systémový soubor, který může být podepsán v katalogu.

signtool verify /a SystemFile.dll  

Následující příkaz ověří systémový soubor, který je podepsán v katalogu s názvem MyCatalog.cat .

signtool verify /c MyCatalog.cat SystemFile.dll  

Viz také