Megosztás a következőn keresztül:


SignTool

A SignTool egy parancssori eszköz, amely digitálisan aláírja a fájlokat, ellenőrzi az aláírásokat a fájlokban, eltávolítja az aláírásokat a fájlokból, és időbélyegeket ad a fájloknak. További információ arról, hogy miért fontos a fájlok aláírása: A kódaláírásibemutatása.

A SignTool a Windows Software Development Kit (SDK)részeként érhető el. Az eszköz a Windows SDK telepítési útvonalának \Bin mappájába van telepítve, például: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe.

Jegyzet

A Windows SDK, Windows Hardware Lab Kit (HLK), Windows Driver Kit (WDK), valamint Windows Assessment and Deployment Kit (ADK) 20236-os és újabb buildjeihez meg kell adnia a kivonatoló algoritmust. A SignTool sign parancshoz szükség van a fájlemésztési algoritmus beállítására (/fd) és az időbélyeg-kivonatoló algoritmus beállításra (/td) az aláírás és az időbélyegzés során.

Ha /fd nincs megadva az aláírás során, és ha /td nincs megadva az időbélyegzés során, a parancs először figyelmeztetést, 0-s hibakódot ad. A SignTool későbbi verzióiban a figyelmeztetés hibává válik. Az SHA256 használatát javasoljuk. Az iparág az SHA1-nél biztonságosabbnak tartja.

Szintaxis

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

Paraméterek

Vita Leírás
command A fájlon végrehajtandó műveletet meghatározó négy parancs egyike: catdb, sign, timestampvagy verify. Az egyes parancsok leírását a következő táblázat tartalmazza.
options Egy parancsot módosító lehetőség. A globális /q és /v mellett minden parancs egyedi beállításkészletet is támogat.
file_name Az aláírandó fájl elérési útja.

A SignTool a következő parancsokat támogatja:

Parancs Leírás
catdb Katalógusfájlt ad hozzá egy katalógusadatbázishoz, vagy eltávolítja onnan. A katalógusadatbázisok a katalógusfájlok automatikus keresésére szolgálnak, és a GUID azonosítja azokat. A catdb parancs által támogatott beállítások listáját catdb parancsbeállításokcímű témakörben találja.
remove Eltávolít egy aláírást egy fájlból. A remove parancs által támogatott beállítások listáját a parancsbeállítások eltávolításacímű témakörben találja.
sign Fájlok digitális aláírása. A digitális aláírások védik a fájlokat a illetéktelen illetéktelen hozzáféréstől, és lehetővé teszik a felhasználók számára, hogy aláíró tanúsítvány alapján ellenőrizzék az aláírót. A sign parancs által támogatott beállítások listáját a aláírási parancs beállításaicímű témakörben találja.
timestamp Időbélyegek fájlok. A timestamp parancs által támogatott beállítások listáját időbélyeg-parancs beállításaicímű témakörben találja.
verify Ellenőrzi a fájlok digitális aláírását. Meghatározza, hogy az aláíró tanúsítványt megbízható hatóság adta-e ki, visszavonták-e az aláíró tanúsítványt, és opcionálisan azt is, hogy az aláíró tanúsítvány érvényes-e egy adott szabályzatra. A verify parancs által támogatott beállítások listáját a parancsbeállítások ellenőrzésénekcímű témakörben találja.

Az alábbi beállítások az összes SignTool-parancsra vonatkoznak:

Globális beállítás Leírás
/q Nem jelenít meg kimenetet, ha a parancs sikeresen fut, és minimális kimenetet jelenít meg, ha a parancs sikertelen.
/v Részletes kimenetet jelenít meg, függetlenül attól, hogy a parancs sikeresen fut vagy sikertelen, és figyelmeztető üzeneteket jelenít meg.
/debug Hibakeresési információkat jelenít meg.

A Catdb parancsbeállításai

Az alábbi táblázat a catdb paranccsal használható beállításokat sorolja fel:

Catdb lehetőség Leírás
/d Az alapértelmezett katalógusadatbázis frissítését adja meg. Ha nem használ /d vagy /g, a SignTool frissíti a rendszerösszetevőt és az illesztőprogram-adatbázist.
/g GUID Megadja, hogy a GUID által azonosított katalógusadatbázis frissül-e.
/r Eltávolítja a megadott katalógust a katalógus-adatbázisból. Ha ez a beállítás nincs megadva, a SignTool hozzáadja a megadott katalógust a katalógus adatbázisához.
/u Megadja, hogy a rendszer automatikusan létrehoz egy egyedi nevet a hozzáadott katalógusfájlokhoz. Szükség esetén a rendszer átnevezi a katalógusfájlokat, hogy megakadályozza a névütközéseket a meglévő katalógusfájlokkal. Ha ez a beállítás nincs megadva, a SignTool felülírja azokat a meglévő katalógusokat, amelyek neve megegyezik a megadott katalógus nevével.

Jegyzet

A katalógusadatbázisok a katalógusfájlok automatikus kereséséhez használhatók.

Parancsbeállítások eltávolítása

Az alábbi táblázat a remove paranccsal használható beállításokat sorolja fel:

Eltávolítási lehetőség Leírás
/c Távolítsa el az összes tanúsítványt, kivéve az aláíró tanúsítványt az aláírásból.
/q Nincs kimenet a sikeres és minimális kimenet a sikertelenséghez. Mint mindig, a SignTool a sikeres 0 és a sikertelen 1 adja vissza.
/s Távolítsa el az aláírást teljes egészében.
/u Távolítsa el a hitelesítés nélküli attribútumokat az aláírásból, például kettős aláírásokat és időbélyegeket.
/v Részletes sikeres és állapotüzenetek nyomtatása. Ez kissé több információt is nyújthat a hibáról.

Az aláírási parancs beállításai

Az alábbi táblázat a sign paranccsal használható beállításokat sorolja fel:

Sign command option Leírás
/a Automatikusan kiválasztja a legjobb aláíró tanúsítványt. A SignTool megkeresi az összes érvényes tanúsítványt, amely megfelel az összes megadott feltételnek, és a leghosszabb ideig érvényes tanúsítványt választja ki. Ha ez a beállítás nem jelenik meg, a SignTool várhatóan csak egy érvényes aláíró tanúsítványt talál.
/ac fájl Hozzáad egy másik tanúsítványt fájlból az aláírási blokkhoz.
/as Hozzáfűzi ezt az aláírást. Ha nincs elsődleges aláírás, akkor ez az aláírás lesz az elsődleges aláírás.
/c CertTemplateName Megadja az aláíró tanúsítvány tanúsítványsablonjának nevét (egy Microsoft-bővítményt).
/csp CSPName Megadja a titkos kulcs tárolóját tartalmazó titkosítási szolgáltatót (CSP).
/d Desc Megadja az aláírt tartalom leírását.
/dg elérési út Létrehozza az aláírandó kivonatot és az aláíratlan PKCS7-fájlokat. A kimeneti kivonat és a PKCS7 fájlok <Path>\<FileName>.dig és <Path>\<FileName>.p7u. További XML-fájl kimenetéhez használja a /dxml.
/di elérési út Az aláírást úgy hozza létre, hogy betölti az aláírt kivonatot az aláíratlan PKCS7 fájlba. A bemeneti aláírt kivonatnak és az aláíratlan PKCS7-fájloknak <Path>\<FileName>.dig.signed és <Path>\<FileName>.p7u.
/dlib DLL- Megadja azt a DLL-t, amely a AuthenticodeDigestSign függvényt implementálja a kivonat aláírásához. Ez a beállítás egyenértékű a SignTool /dg, /dsés /di beállításokkal való külön használatával. Ez a beállítás mindháromat egyetlen atomi műveletként hívja meg.
/dmdf Fájlnév Ha a /dg beállítással használja, módosítás nélkül továbbítja a fájl tartalmát a AuthenticodeDigestSign függvénynek.
/ds Csak a kivonatot írja alá. A bemeneti fájlnak a /dg beállítás által létrehozott kivonatnak kell lennie. A kimeneti fájl a következő: <Fájl>.signed.
/du URL- Az aláírt tartalom kibontott leírásához egy egységes erőforrás-keresőt (URL-címet) ad meg.
/dxml Ha a /dg beállítással használja, xml-fájlt hoz létre. A kimeneti fájl a következő: <Path>\<FileName>.dig.xml.
/f SignCertFile Megadja az aláíró tanúsítványt egy fájlban. Ha a fájl személyes adatcsere (PFX) formátumban van, és jelszóval van védve, használja a /p lehetőséget a jelszó megadásához. Ha a fájl nem tartalmaz titkos kulcsokat, használja a /csp és /kc beállításokat a CSP és a titkos kulcs tárolójának nevének megadásához.
/fd alg Megadja a fájlaadékok létrehozásához használandó fájlemésztő algoritmust. Megjegyzés: Ha a /fd beállítás nincs megadva aláíráskor, a parancs hibát okoz.
/fd certHash A "certHash" sztring megadása miatt a parancs az aláíró tanúsítványon megadott algoritmust használja. Megjegyzés: Ha a /fd beállítás nincs megadva aláíráskor, a parancs hibát okoz.
/i IssuerName Az aláíró tanúsítvány kiállítójának nevét adja meg. Ez az érték a teljes kiállító nevének alsztringje lehet.
/kc PrivKeyContainerName Megadja a titkos kulcs tárolójának nevét.
/n SubjectName Megadja az aláíró tanúsítvány tulajdonosának nevét. Ez az érték a teljes tulajdonosnév alsztringje lehet.
/nph Ha támogatott, letiltja a végrehajtható fájlok lapkivonatait. Az alapértelmezett értéket a SIGNTOOL_PAGE_HASHES környezeti változó és a wintrust.dll verzió határozza meg. Ez a beállítás figyelmen kívül lesz hagyva a nem PE-fájlok esetében.
/p jelszó Megadja a PFX-fájlok megnyitásakor használni kívánt jelszót. PfX-fájl megadásához használja a /f lehetőséget.
/p7 elérési út Azt határozza meg, hogy minden megadott tartalomfájlhoz egy nyilvános kulcsú titkosítási szabvány (PKCS) #7 fájl legyen létrehozva. A PKCS #7 fájlok neve <elérési út>\<fájlnév>.p7.
/p7ce Érték Megadja az aláírt PKCS #7 tartalom beállításait. Állítsa Érték úgy, hogy Embedded az aláírt tartalom beágyazásához a PKCS #7 fájlba, vagy DetachedSignedData egy leválasztott PKCS #7 fájl aláírt adatrészének létrehozásához. Ha a /p7ce beállítás nincs megadva, az aláírt tartalom alapértelmezés szerint beágyazva lesz.
/p7co <OID> Megadja az aláírt PKCS #7 tartalmat azonosító objektumazonosítót (OID).
/ph Ha támogatott, lapkivonatokat hoz létre végrehajtható fájlokhoz.
/r RootSubjectName Megadja annak a főtanúsítványnak a nevét, amelyhez az aláíró tanúsítványnak láncot kell fűznie. Ez az érték a főtanúsítvány teljes tulajdonosi nevének részszúrása lehet.
/s StoreName Megadja a megnyitni kívánt tárolót, amikor a parancs megkeresi a tanúsítványt. Ha ez a beállítás nincs megadva, a parancs megnyitja a My tárolót.
/sha1 kivonat Az aláíró tanúsítvány SHA1 kivonatát adja meg. Az SHA1 kivonatot gyakran használják, ha több tanúsítvány is megfelel a többi lehetőség által megadott feltételeknek.
/sm Megadja, hogy a parancs felhasználói tároló helyett géptárolót használjon.
/t URL- Az időbélyeg-kiszolgáló URL-címét adja meg. Ha ez a beállítás vagy /tr nincs megadva, az aláírt fájl nincs időbélyegzve. Ha az időbélyegzés sikertelen, a parancs figyelmeztetést hoz létre. Ez a beállítás nem használható a /tr beállítással.
/td alg Az RFC 3161 időbélyeg-kiszolgáló által használt kivonatoló algoritmus kérése /tr lehetőséggel. Megjegyzés: Ha /td nincs megadva az időbélyegzés során, a parancs hibát okoz.
/tr URL- Az RFC 3161 időbélyeg-kiszolgáló URL-címét adja meg. Ha ez a beállítás vagy /t nincs megadva, az aláírt fájl nincs időbélyegzve. Ha az időbélyegzés sikertelen, a parancs figyelmeztetést hoz létre. Ez a beállítás nem használható a /t beállítással.
/u használati Megadja az aláíró tanúsítványban található kibővített kulcshasználatot (EKU). A használati érték OID vagy sztring alapján adható meg. Az alapértelmezett használat Code Signing vagy 1.3.6.1.5.5.7.3.3.
/uw A Windows System Component Verification vagy 1.3.6.1.4.1.311.10.3.6használatát adja meg.

Használati példákért lásd: A SignTool használata fájlaláírásához.

Időbélyeg-parancs beállításai

Az alábbi táblázat a timestamp paranccsal használható beállításokat sorolja fel:

Időbélyeg beállítás Leírás
/p7 Időbélyegek PKCS #7 fájlok.
/t URL- Az időbélyeg-kiszolgáló URL-címét adja meg. A lepecsételt fájlnak korábban alá kell írnia. A /t vagy a /tr lehetőség szükséges.
/td alg Az RFC 3161 időbélyeg-kiszolgáló által használt kivonatoló algoritmus kérése /tr lehetőséggel. Megjegyzés: Ha az időbélyegzés során nincs megadva /td, a parancs figyelmeztetést hoz létre.
index/tp Az idő az aláírást index.
/tr URL- Az RFC 3161 időbélyeg-kiszolgáló URL-címét adja meg. A lepecsételt fájlnak korábban alá kell írnia. A /tr vagy a /t lehetőség szükséges.

Parancsbeállítások ellenőrzése

Az alábbi táblázat a verify paranccsal használható beállításokat sorolja fel:

Ellenőrzési lehetőség Leírás
/a Megadja, hogy minden metódus használható a fájl ellenőrzéséhez. Először a SignTool megkeresi a katalógus-adatbázisokat annak megállapításához, hogy a fájl egy katalógusban van-e bejelentkezve. Ha a fájl nincs bejelentkezve egyik katalógusban sem, a SignTool megpróbálja ellenőrizni a fájl beágyazott aláírását. Ezt a lehetőséget akkor javasoljuk, ha ellenőrzi azokat a fájlokat, amelyek esetleg nincsenek bejelentkezve egy katalógusban. Az esetleg aláírt fájlok közé tartozhatnak windowsos fájlok vagy illesztőprogramok.
/ad Megkeresi a katalógust az alapértelmezett katalógusadatbázis használatával.
/all Ellenőrzi, hogy egy fájlban lévő összes aláírás több aláírással rendelkezik-e.
/as Megkeresi a katalógust a rendszerösszetevő (illesztőprogram) katalógusadatbázisával.
/ag CatDBGUID Megkeresi a katalógust a GUID által azonosított katalógusadatbázisban.
/c CatFile A katalógusfájlt név szerint adja meg.
/d Kinyomtatja a leírás és a leírás URL-címét. Windows Vista és korábbi verziók: Ez a beállítás nem támogatott.
/ds Index Ellenőrzi az aláírást egy bizonyos pozícióban.
/hash{SHA1|SHA256} Egy választható kivonatoló algoritmust ad meg, amelyet a katalógusban lévő fájlok keresésekor használhat.
/kp Az ellenőrzést az x64 kernel módú illesztőprogram-aláírási szabályzattal hajtja végre.
/ms Több ellenőrzési szemantikát használ. Ez a viselkedés az alapértelmezett WinVerifyTrust hívás.
/o verzió Ellenőrzi a fájlt az operációs rendszer verziója alapján. A verzióparaméter a következő formában jelenik meg: <PlatformID>:<VerMajor>.<VerMinor>.<BuildNumber>. Javasoljuk, hogy használja a /o lehetőséget. Ha /o nincs megadva, előfordulhat, hogy a SignTool váratlan eredményeket ad vissza. Ha például nem tartalmazza a /o, akkor előfordulhat, hogy egy régebbi operációs rendszeren helyesen érvényesítő rendszerkatalógusok nem megfelelően érvényesítenek egy újabb operációs rendszeren.
/p7 PKCS #7 fájlokat ellenőriz. A PKCS #7 ellenőrzéshez nem használ meglévő szabályzatokat. A SignTool ellenőrzi az aláírást, és létrehoz egy láncot az aláíró tanúsítványhoz.
/pa Megadja, hogy a rendszer az alapértelmezett hitelesítési ellenőrzési szabályzatot használja. Ha a /pa beállítás nincs megadva, a SignTool a Windows illesztőprogram-ellenőrzési szabályzatát használja. Ez a beállítás nem használható a catdb beállításokkal.
/pg PolicyGUID A GUID-alapú ellenőrzési szabályzatot adja meg. A GUID megfelel az ellenőrzési szabályzat ActionID. Ez a beállítás nem használható a catdb beállításokkal.
/ph Lapkivonat értékeinek nyomtatása és ellenőrzése. Windows Vista és korábbi verziók: Ez a beállítás nem támogatott.
/r RootSubjectName Megadja annak a főtanúsítványnak a nevét, amelyhez az aláíró tanúsítványnak láncot kell fűznie. Ez az érték a főtanúsítvány teljes tulajdonosi nevének részszúrása lehet.
/tw Megadja, hogy a parancs figyelmeztetést generáljon, ha az aláírás nincs időbélyegzve.

A SignTool verify parancs határozza meg, hogy az aláíró tanúsítványt megbízható szolgáltató adta-e ki, visszavonták-e az aláíró tanúsítványt, és opcionálisan azt is, hogy az aláíró tanúsítvány érvényes-e egy adott szabályzatra.

A SignTool verify parancs csak akkor adja meg a beágyazott aláírás állapotát, ha nincs megadva lehetőség a katalógusban való keresésre, például /a, /ad, /as, /agvagy /c.

Visszaadott érték

A SignTool a következő kilépési kódok egyikét adja vissza, amikor leáll:

Kilépési kód Leírás
0 A végrehajtás sikeres volt.
1 A végrehajtás sikertelen volt.
2 A végrehajtás figyelmeztetésekkel fejeződött be.

Példák

Az alábbi parancs hozzáadja a katalógusfájlt MyCatalogFileName.cat a rendszerösszetevőhöz és az illesztőprogram-adatbázishoz. A /u beállítás egyedi nevet hoz létre, ha szükséges, hogy megakadályozza a MyCatalogFileName.catnevű meglévő katalógusfájl cseréjét.

signtool catdb /v /u MyCatalogFileName.cat

Az alábbi parancs automatikusan aláír egy fájlt a legjobb tanúsítvány használatával.

signtool sign /a /fd SHA256 MyFile.exe 

Az alábbi parancs digitálisan aláír egy fájlt egy jelszóval védett PFX-fájlban tárolt tanúsítvánnyal.

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

Az alábbi parancs digitálisan aláírja és időbélyegzi a fájlokat. A fájl aláírásához használt tanúsítvány egy PFX-fájlban van tárolva.

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

Az alábbi parancs aláír egy fájlt egy My tárolóban található tanúsítvánnyal, amely My Company Certificatetulajdonosnévvel rendelkezik.

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

Az alábbi parancs aláír egy ActiveX-vezérlőt, és a böngészőben megjelenő információkat nyújt, amikor a felhasználó a vezérlő telepítésére kéri.

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

Az alábbi parancsidő egy már digitálisan aláírt fájlt bélyegz.

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

Az alábbi parancsidő egy RFC 3161 időbélyeg-kiszolgálóval bélyegz le egy fájlt.

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

Az alábbi parancs ellenőrzi, hogy egy fájl aláírása megtörtént-e.

signtool verify MyFile.exe

Az alábbi parancs ellenőrzi a katalógusban bejelentkezhető rendszerfájlt.

signtool verify /a SystemFile.dll

Az alábbi parancs ellenőrzi a MyCatalog.catnevű katalógusban bejelentkezett rendszerfájlt.

signtool verify /c MyCatalog.cat SystemFile.dll

Az alábbi parancs teljesen eltávolítja az aláírást egy fájlból.

signtool remove /s MyFile.exe

Lásd még:

A SignTool használata fájl

A kódaláírási bemutatása