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 , Timestamp nebo 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čů. |
/g IDENTIFIKÁ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.) |
/p7 Cesta |
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. |
/p7ce Hodnota |
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. |
/tp index |
Č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. |
/ag CatDBGUID |
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č). |
/c CatFile |
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šší. |
/o Verze |
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 . |
/pg PolicyGUID |
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. |
/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. |
/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 Certificate
subjektu .
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