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:

Buildy sady 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 algoritmus hash souboru a /td možnost algoritmu hash časového razítka , která se má zadat během podepisování a časového razítka. Pokud během podepisování není zadána chyba (kód chyby 1), bude vyvolán /fd chyba (kód chyby 1), pokud /td není zadána během časového razítka.

Na 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) určující operaci, která se má provést se souborem. 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í 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 naleznete v tématu možnosti příkazu 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 naleznete v části Možnosti příkazu podepsat.
Timestamp Opatří soubory časovým razítkem. Seznam možností podporovaných příkazem TimeStamp naleznete v části 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 Verify naleznete v 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 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. /d Pokud se nepoužívá ani /g možnost, nástroj Sign Tool aktualizuje systémovou součást a databázi ovladačů.
/gIDENTIFIKÁTOR GUID Určuje, že se aktualizuje databáze katalogu identifikovaná globálně jedinečným identifikátorem GUID .
/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 soubor Přidá do bloku podpisu další certifikát ze souboru .
/as Připojí tento podpis. Pokud neexistuje žádný primární podpis, tento podpis se stane primárním podpisem.
/c CertTemplateName Určuje název šablony certifikátu (rozšíření Microsoft) pro podpisový certifikát.
/csp CSPName Určuje poskytovatele CSP (Cryptographic Service Provider), který obsahuje kontejner soukromého klíče.
/d Desc Určuje popis podepsaného obsahu.
/du Adresa URL Určuje adresu URL (Uniform Resource Locator) pro rozšířený popis podepsaného obsahu.
/f SignCertFile Určuje podpisový certifikát v souboru. Pokud je soubor ve formátu PFX (Personal Information Exchange) a chráněný heslem, použijte /p možnost zadat heslo. Pokud soubor neobsahuje privátní klíče, použijte /csp možnosti 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 se při podepisování nezadá přepínač, /fd vygeneruje se chyba.
/fd certHash Zadáním řetězce certHash se ve výchozím nastavení použije algoritmus použitý v podpisovém certifikátu.
Poznámka: Pokud se při podepisování nezadá přepínač, /fd vygeneruje se chyba.
/i IssuerName Určuje název vystavitele podpisového certifikátu. Tato hodnota může být podřetězec celého jména vystavitele.
/kc PrivKeyContainerName Určuje název kontejneru soukromého klíče.
/n SubjectName 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 Heslo Určuje heslo, které má být použito při otevírání souboru PFX. (Pomocí /f možnosti zadejte soubor PFX.)
/p7Cesta 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.
/p7ceHodnota Určuje volby pro podepsaný obsah PKCS #7. Pokud chcete vložit podepsaný obsah do souboru PKCS #7 nebo "DetachedSignedData", nastavte hodnotu "Embedded", aby se vytvořila podepsaná datová část odpojeného souboru PKCS #7. Pokud se /p7ce tato možnost nepoužívá, podepsaný obsah se ve výchozím nastavení vloží.
/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.
/r RootSubjectName 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 StoreName 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ě.
/sha1 Hašé 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 Adresa URL Určuje adresu URL časového razítka serveru. Pokud tato možnost (nebo /tr) není k dispozici, podepsaný soubor nebude časový razítko. Pokud se opatření časovým razítkem nezdaří, vygeneruje se upozornění. Tuto možnost nelze použít s /tr touto možností.
/td Alg Používá se s /tr možností vyžádat algoritmus digest používaný serverem časového razítka RFC 3161.
Poznámka: Pokud není k dispozici časové razítko, vygeneruje /td se chyba.
/tr Adresa URL Určuje adresu URL časového razítka serveru RFC 3161. Pokud tato možnost (nebo /t) není k dispozici, podepsaný soubor nebude časový razítko. Pokud se opatření časovým razítkem nezdaří, vygeneruje se upozornění. Tuto možnost nelze použít s /t touto možností.
/u Zvyk 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

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

Možnost TimeStamp Popis
/p7 Opatří soubory PKCS #7 časovým razítkem.
/t Adresa 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. Buď je požadována /t možnost, nebo je tato možnost povinná /tr .
/td Alg Používá se s /tr možností vyžádat algoritmus digest používaný serverem časového razítka RFC 3161.
Poznámka: Pokud není k dispozici časové razítko, vygeneruje /td se chyba.
/tpindex Časové razítko podpisu v indexu.
/tr Adresa 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. Buď je požadována /tr možnost, nebo je tato možnost povinná /t .

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 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.
/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.
/ds Index 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 ve Windows 8 a vyšší.
/oVerze Ověřuje soubor podle verze operačního systému. Verze má následující formulář: PlatformID:VerMajor.VerMinor.BuildNumber. PlatformID představuje základní hodnotu člena výčtu PlatformID . Důležité: Doporučuje se použití /o přepínače. Pokud /o není zadaný, SignTool.exe může vrátit neočekávané výsledky. Pokud například přepínač nezahrnete /o , katalogy systému, které se správně ověřují ve starším operačním systému, nemusí být v novějším operačním systému správně ověřeny.
/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 není tato /pa možnost zadána, nástroj Sign Tool používá zásady ověření ovladače systému Windows. Tuto možnost nelze použít s možnostmi catdb .
/pgPolicyGUID Určuje zásady ověření podle identifikátoru GUID. Identifikátor PolicyGUID odpovídá ID akce ověřovací zásady. 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 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ě.
0 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čů. Tato /u možnost vygeneruje jedinečný název v případě potřeby, 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 My v úložišti 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 zobrazí 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 přihlášený v katalogu s názvem MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll  

Viz také