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í 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 buildy 20236 a novější vyžadují zadání algoritmu digest. Příkaz SignTool sign vyžaduje/fd, aby během podepisování a časového razítka byla zadána možnost algoritmu digest souboru a /tdalgoritmus časového razítka. Chyba (kód chyby 1) se vyvolá, pokud /fd není zadán během podepisování a pokud /td není zadán během časového razítka.

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

Syntaxe

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

Parametry

Argument Description
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 /q možností a /v možností podporuje každý příkaz 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 najdete v catdb tématu Možnosti příkazů 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 najdete v sign tématu Podepsání možností příkazu.
Timestamp Opatří soubory časovým razítkem. Seznam možností podporovaných příkazem najdete v TimeStamp tématu Možnosti příkazu 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 najdete v Verify tématu Ověření možností příkazu.

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

Možnost Global Description
/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í.
/Ladění Zobrazí informace o ladění.

Možnosti příkazu catdb

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

Možnost Catdb Description
/d Určuje, že výchozí databáze katalogů je aktualizována. Pokud není použita možnost /d ani /g možnost, nástroj Sign Tool aktualizuje systémovou komponentu a databázi ovladačů.
/gIdentifikátor guid Určuje, že databáze katalogu identifikovaná globálně jedinečným identifikátorem GUID se aktualizuje.
/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é se dají s příkazem sign použít.

Možnost příkazu sign Description
/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.
/acSoubor 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.
/cCertTemplateName Určuje název šablony certifikátu (rozšíření Microsoft) pro podpisový certifikát.
/cspCSPName Určuje poskytovatele CSP (Cryptographic Service Provider), který obsahuje kontejner soukromého klíče.
/dDesc Určuje popis podepsaného obsahu.
/duAdresu url Určuje adresu URL (Uniform Resource Locator) pro rozšířený popis podepsaného obsahu.
/fSignCertFile Určuje podpisový certifikát v souboru. Pokud je soubor ve formátu PFX (Personal Information Exchange) chráněný heslem, zadejte heslo pomocí /p možnosti . Pokud soubor neobsahuje privátní klíče, pomocí /csp možností a /kc zadejte název kontejneru CSP a privátního klíče.
/fd Určuje soubor algoritmu digest pro vytváření podpisů souborů.
Poznámka: Pokud /fd při podepisování není k dispozici přepínač, vygeneruje se chyba.
/fdcertHash Zadáním řetězce certHash se ve výchozím nastavení použije algoritmus použitý na podpisovém certifikátu.
Poznámka: Pokud /fd při podepisování není k dispozici přepínač, vygeneruje se chyba.
/iIssuername Určuje název vystavitele podpisového certifikátu. Tato hodnota může být podřetězec celého jména vystavitele.
/kcPrivKeyContainerName Určuje název kontejneru soukromého klíče.
/nSubjectName 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.
/pHeslo Určuje heslo, které má být použito při otevírání souboru PFX. (Pomocí možnosti /f zadejte soubor PFX.)
/p7Cestu 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 path\filename.p7.
/p7ceHodnotu Určuje volby pro podepsaný obsah PKCS #7. Pokud chcete vložit podepsaný obsah do souboru PKCS #7, nastavte Hodnotu na Embedded, nebo na Hodnotu DetachedSignedData vytvořte podepsanou datovou část odpojeného souboru PKCS #7. Pokud se /p7ce tato možnost nepoužívá, je podepsaný obsah ve výchozím nastavení vložený.
/p7co<OID> 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.
/rRootSubjectName 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.
/sStorename Určuje úložiště k otevření při hledání certifikátu. Pokud tato možnost není zadána, My otevře se úložiště.
/sha1Hash 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.
/tAdresu url Určuje adresu URL časového razítka serveru. Pokud tato možnost (nebo /tr) neexistuje, nebude podepsaný soubor opatřen časovým razítkem. Pokud se opatření časovým razítkem nezdaří, vygeneruje se upozornění. Tuto možnost nelze s možností /tr použít.
/tdAlg Používá se s /tr možností vyžádat algoritmus digest, který používá server časového razítka RFC 3161.
Poznámka: Pokud se během časového razítka /td nezadá, vygeneruje se chyba.
/trAdresu url Určuje adresu URL časového razítka serveru RFC 3161. Pokud tato možnost (nebo /t) neexistuje, nebude podepsaný soubor opatřen časovým razítkem. Pokud se opatření časovým razítkem nezdaří, vygeneruje se upozornění. Tuto možnost nelze s možností /t použít.
/uPoužití 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 Podepsání souboru pomocí Nástroje SignTool.

Možnosti příkazu TimeStamp

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

Možnost TimeStamp Description
/p7 Opatří soubory PKCS #7 časovým razítkem.
/tAdresu url 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. Je vyžadována /t/tr možnost nebo .
/tdAlg Používá se s /tr možností vyžádat algoritmus digest, který používá server časového razítka RFC 3161.
Poznámka: Pokud se během časového razítka /td nezadá, vygeneruje se chyba.
/tpIndex Čas označí podpis v indexu.
/trAdresu url 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. Je vyžadována /tr/t možnost nebo .

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

Možnosti příkazu Verify

Možnost Verify Description
/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.
/agCatDBGUID Vyhledá katalog v databázi katalogu, která je identifikovaná identifikátorem 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č).
/cCatFile Určuje soubor katalogu podle názvu.
/d Určuje, že má nástroj Sign Tool vytisknout popis a adresu URL popisu.
/dsIndex 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í WinVerifyTrust pro Windows 8 a vyšší.
/oVerze Ověřuje soubor podle verze operačního systému. Verze má následující tvar: PlatformID:VerMajor. VerMinor. BuildNumber. PlatformID představuje základní hodnotu člena výčtu PlatformID . Důležité: Doporučuje se použít /o přepínač. Pokud /o není zadaný, může SignTool.exe vrátit neočekávané výsledky. Pokud například nezadáte /o přepínač, nemusí se katalogy systému, které správně ověřují ve starším operačním systému, správně ověřit 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. Pokud možnost /pa není zadána, použije nástroj Sign Tool zásady ověření ovladače systému Windows. Tuto možnost nelze použít s možnostmi catdb .
/pgIdentifikátor POLICYGUID Určuje zásady ověření podle identifikátoru GUID. Identifikátor PolicyGUID odpovídá ActionID zásady ověřování. Tuto možnost nelze použít s možnostmi catdb .
/ph Určuje, že nástroj Sign Tool má tisknout a ověřit hash hodnoty stránky.
/rRootSubjectName 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 Ověření podpisu souboru pomocí signatury SignTool.

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čů. Možnost /u v případě potřeby vygeneruje jedinečný název, 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 umístěného v úložišti My s názvem My Company Certificatesubjektu .

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

Následující příkaz podepíše ovládací prvek ActiveX a poskytne informace, které se zobrazí v prohlížeči, když se uživateli zobrazí výzva 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 označí soubor časovým razítkem pomocí serveru časového razítka 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 podepsaný v katalogu s názvem MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll  

Viz také