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 , timestamp vagy 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.6 haszná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
, /ag
vagy /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 Certificate
tulajdonosné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.cat
nevű 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 kódaláírási bemutatása