SignTool.exe (tekenprogramma)
Sign Tool is een opdrachtregelprogramma dat bestanden digitaal ondertekent, handtekeningen controleert in bestanden en tijdstempelbestanden.
Dit hulpprogramma wordt automatisch geïnstalleerd met Visual Studio. Als u het hulpprogramma wilt uitvoeren, gebruikt u de Visual Studio Developer-opdrachtprompt of Visual Studio Developer PowerShell.
Notitie
Voor de Windows 10 SDK, Windows 10 HLK, Windows 10 WDK en Windows 10 ADK-builds 20236 en hoger is het opgeven van het digest-algoritme vereist. Voor de opdracht SignTool sign
moeten het /fd
algoritme voor bestandssamenvating en de optie voor het /td
tijdstempelalgoritme worden opgegeven tijdens de ondertekening en tijdstempel. Er wordt een fout (foutcode 1) gegenereerd als /fd
deze niet is opgegeven tijdens de ondertekening en als /td
deze niet is opgegeven tijdens de tijdstempel.
Typ het volgende bij de opdrachtprompt:
Syntaxis
signtool [command] [options] [file_name | ...]
Parameters
Argument | Beschrijving |
---|---|
command |
Een van de vier opdrachten (catdb , sign , Timestamp of Verify ) waarmee een bewerking wordt opgegeven die moet worden uitgevoerd op een bestand. Zie de volgende tabel voor een beschrijving van elke opdracht. |
options |
Een optie waarmee een opdracht wordt gewijzigd. Naast de algemene /q opties ondersteunt /v elke opdracht een unieke set opties. |
file_name |
Het pad naar een bestand dat moet worden ondertekend. |
De volgende opdrachten worden ondersteund door sign tool. Elke opdracht wordt gebruikt met verschillende sets opties, die worden vermeld in hun respectieve secties.
Opdracht | Beschrijving |
---|---|
catdb |
Hiermee voegt u een catalogusbestand toe aan of verwijdert u het uit een catalogusdatabase. Catalogusdatabases worden gebruikt voor het automatisch opzoeken van catalogusbestanden en worden geïdentificeerd door GUID. Zie catdb-opdrachtopties voor een lijst met de opties die door de catdb opdracht worden ondersteund. |
sign |
Bestanden digitaal tekenen. Met digitale handtekeningen worden bestanden beschermd tegen manipulatie en kunnen gebruikers de ondertekenaar verifiëren op basis van een handtekeningcertificaat. Zie Opdrachtopties ondertekenen voor een lijst met opties die door de sign opdracht worden ondersteund. |
Timestamp |
Tijdstempelbestanden. Zie TimeStamp Command Options voor een lijst met opties die door de TimeStamp opdracht worden ondersteund. |
Verify |
Controleert de digitale handtekening van bestanden door te bepalen of het handtekeningcertificaat is uitgegeven door een vertrouwde instantie, of het handtekeningcertificaat is ingetrokken en, optioneel, of het handtekeningcertificaat geldig is voor een specifiek beleid. Zie Opdrachtopties verifiëren voor een lijst met de opties die door de Verify opdracht worden ondersteund. |
De volgende opties zijn van toepassing op alle opdrachten voor tekenprogramma's.
Globale optie | Beschrijving |
---|---|
/q | Geeft geen uitvoer weer als de opdracht is uitgevoerd en geeft minimale uitvoer weer als de opdracht mislukt. |
/v | Geeft uitgebreide uitvoer weer, ongeacht of de opdracht is uitgevoerd of mislukt, en geeft waarschuwingsberichten weer. |
/debuggen | Geeft foutopsporingsinformatie weer. |
Opties voor catdb-opdrachten
De volgende tabel bevat de opties die kunnen worden gebruikt met de catdb
opdracht.
Catdb-optie | Beschrijving |
---|---|
/d |
Hiermee geeft u op dat de standaardcatalogusdatabase wordt bijgewerkt. Als noch de /d /g optie wordt gebruikt, werkt Sign Tool het systeemonderdeel en de stuurprogrammadatabase bij. |
/g GUID |
Hiermee geeft u op dat de catalogusdatabase die wordt geïdentificeerd door de GUID voor globally unique identifier, wordt bijgewerkt. |
/r |
Hiermee verwijdert u de opgegeven catalogi uit de catalogusdatabase. Als deze optie niet is opgegeven, worden de opgegeven catalogi toegevoegd aan de catalogusdatabase. |
/u |
Hiermee geeft u op dat automatisch een unieke naam wordt gegenereerd voor de toegevoegde catalogusbestanden. Indien nodig worden de catalogusbestanden hernoemd om naamconflicten met bestaande catalogusbestanden te voorkomen. Als deze optie niet is opgegeven, overschrijft Sign Tool een bestaande catalogus met dezelfde naam als de catalogus die wordt toegevoegd. |
opdrachtopties ondertekenen
De volgende tabel bevat de opties die kunnen worden gebruikt met de sign
opdracht.
Opdrachtoptie Ondertekenen | Beschrijving |
---|---|
/a |
Hiermee selecteert u automatisch het beste handtekeningcertificaat. Sign Tool vindt alle geldige certificaten die voldoen aan alle opgegeven voorwaarden en selecteer het certificaat dat voor de langste tijd geldig is. Als deze optie niet aanwezig is, verwacht sign tool slechts één geldig handtekeningcertificaat te vinden. |
/ac bestand |
Voegt een extra certificaat van bestand toe aan het handtekeningblok. |
/as |
Voegt deze handtekening toe. Als er geen primaire handtekening aanwezig is, wordt deze handtekening in plaats daarvan de primaire handtekening gemaakt. |
/c CertTemplateName |
Hiermee geeft u de naam van het certificaatsjabloon (een Microsoft-extensie) voor het handtekeningcertificaat op. |
/csp CSPName |
Hiermee geeft u de cryptografische serviceprovider (CSP) op die de container met persoonlijke sleutels bevat. |
/d Desc |
Hiermee geeft u een beschrijving van de ondertekende inhoud. |
/du URL |
Hiermee geeft u een URL (Uniform Resource Locator) op voor de uitgebreide beschrijving van de ondertekende inhoud. |
/f SignCertFile |
Hiermee geeft u het handtekeningcertificaat in een bestand. Als het bestand de PFX-indeling (Personal Information Exchange) heeft en is beveiligd met een wachtwoord, gebruikt u de /p optie om het wachtwoord op te geven. Als het bestand geen persoonlijke sleutels bevat, gebruikt u de /csp en /kc opties om de naam van de CSP- en persoonlijke sleutelcontainer op te geven. |
/fd |
Hiermee geeft u het algoritme voor bestandssamenvating op dat moet worden gebruikt voor het maken van bestandshandtekeningen. Notitie: Er wordt een fout gegenereerd als de switch niet wordt opgegeven tijdens het /fd ondertekenen. |
/fd certHash |
Als u het tekenreekscertificaat opgeeft , wordt standaard het algoritme gebruikt voor het handtekeningcertificaat. Notitie: Er wordt een fout gegenereerd als de switch niet wordt opgegeven tijdens het /fd ondertekenen. |
/i IssuerName |
Hiermee geeft u de naam van de uitgever van het handtekeningcertificaat. Deze waarde kan een subtekenreeks zijn van de volledige naam van de uitgever. |
/kc PrivKeyContainerName |
Hiermee geeft u de naam van de persoonlijke sleutelcontainer. |
/n Onderwerpnaam |
Hiermee geeft u de naam van het onderwerp van het handtekeningcertificaat. Deze waarde kan een subtekenreeks van de volledige onderwerpnaam zijn. |
/nph |
Indien ondersteund, onderdrukt u pagina-hashes voor uitvoerbare bestanden. De standaardwaarde wordt bepaald door de omgevingsvariabele SIGNTOOL_PAGE_HASHES en door de wintrust.dll versie. Deze optie wordt genegeerd voor niet-PE-bestanden. |
/p Wachtwoord |
Hiermee geeft u het wachtwoord op dat moet worden gebruikt bij het openen van een PFX-bestand. (Gebruik de /f optie om een PFX-bestand op te geven.) |
/p7 Pad |
Hiermee geeft u op dat een PKCS-bestand (Public Key Cryptography Standards) #7 wordt geproduceerd voor elk opgegeven inhoudsbestand. PKCS #7-bestanden hebben de naam bestandsnaam.p7 van het pad\. |
/p7ce Waarde |
Hiermee geeft u opties voor de ondertekende PKCS #7-inhoud. Stel waarde in op Ingesloten om de ondertekende inhoud in te sluiten in het PKCS #7-bestand of op 'DetachedSignedData' om het ondertekende gegevensgedeelte van een losgekoppeld PKCS #7-bestand te produceren. Als de /p7ce optie niet wordt gebruikt, wordt de ondertekende inhoud standaard ingesloten. |
/p7co <OID> |
Hiermee geeft u de object-id (OID) op die de ondertekende PKCS #7-inhoud identificeert. |
/ph |
Indien ondersteund, genereert u pagina-hashes voor uitvoerbare bestanden. |
/r RootSubjectName |
Hiermee geeft u de naam op van het onderwerp van het basiscertificaat waarnaar het handtekeningcertificaat moet worden gekoppeld. Deze waarde kan een subtekenreeks zijn van de volledige onderwerpnaam van het basiscertificaat. |
/s StoreName |
Hiermee geeft u het archief dat moet worden geopend bij het zoeken naar het certificaat. Als deze optie niet is opgegeven, wordt het My archief geopend. |
/sha1 Hekje |
Hiermee geeft u de SHA1-hash van het handtekeningcertificaat. De SHA1-hash wordt meestal opgegeven wanneer meerdere certificaten voldoen aan de criteria die zijn opgegeven door de resterende switches. |
/sm |
Hiermee geeft u op dat een computerarchief, in plaats van een gebruikersarchief, wordt gebruikt. |
/t URL |
Hiermee geeft u de URL van de tijdstempelserver. Als deze optie (of /tr ) niet aanwezig is, wordt het ondertekende bestand niet gestempeld. Er wordt een waarschuwing gegenereerd als tijdstempels mislukken. Deze optie kan niet worden gebruikt met de /tr optie. |
/td Alg |
Wordt gebruikt met de /tr optie om een digest-algoritme aan te vragen dat wordt gebruikt door de RFC 3161-tijdstempelserver. Notitie: Er wordt een fout gegenereerd als /td er geen tijdstempel wordt opgegeven. |
/tr URL |
Hiermee geeft u de URL van de RFC 3161 tijdstempelserver. Als deze optie (of /t ) niet aanwezig is, wordt het ondertekende bestand niet gestempeld. Er wordt een waarschuwing gegenereerd als tijdstempels mislukken. Deze optie kan niet worden gebruikt met de /t optie. |
/u Gebruik |
Hiermee geeft u het uitgebreide sleutelgebruik (EKU) op dat aanwezig moet zijn in het handtekeningcertificaat. De gebruikswaarde kan worden opgegeven door OID of tekenreeks. Het standaardgebruik is Ondertekening van programmacode (1.3.6.1.5.5.7.3.3). |
/uw |
Hiermee geeft u het gebruik van Windows System Component Verification (1.3.6.1.4.1.311.10.3.6). |
Zie SignTool gebruiken om een bestand te ondertekenen voor gebruiksvoorbeelden.
TimeStamp-opdrachtopties
De volgende tabel bevat de opties die kunnen worden gebruikt met de TimeStamp
opdracht.
TimeStamp-optie | Beschrijving |
---|---|
/p7 |
Tijdstempels PKCS #7 bestanden. |
/t URL |
Hiermee geeft u de URL van de tijdstempelserver. Het bestand dat een tijdstempel heeft, moet eerder zijn ondertekend. /t De optie of de /tr optie is vereist. |
/td Alg |
Wordt gebruikt met de /tr optie om een digest-algoritme aan te vragen dat wordt gebruikt door de RFC 3161-tijdstempelserver. Notitie: Er wordt een fout gegenereerd als /td er geen tijdstempel wordt opgegeven. |
/tp index |
Tijdstempels van de handtekening bij index. |
/tr URL |
Hiermee geeft u de URL van de RFC 3161 tijdstempelserver. Het bestand dat een tijdstempel heeft, moet eerder zijn ondertekend. /tr De optie of de /t optie is vereist. |
Zie Tijdstempels toevoegen aan eerder ondertekende bestanden voor een gebruiksvoorbeeld.
Opdrachtopties verifiëren
Optie Verifiëren | Beschrijving |
---|---|
/a |
Hiermee geeft u op dat alle methoden kunnen worden gebruikt om het bestand te verifiëren. Eerst worden de catalogusdatabases doorzocht om te bepalen of het bestand is aangemeld in een catalogus. Als het bestand niet is aangemeld in een catalogus, probeert het hulpprogramma voor ondertekenen de ingesloten handtekening van het bestand te controleren. Deze optie wordt aanbevolen bij het controleren van bestanden die al dan niet zijn aangemeld in een catalogus. Voorbeelden van deze bestanden zijn Windows-bestanden of -stuurprogramma's. |
/ad |
Hiermee zoekt u de catalogus met behulp van de standaardcatalogusdatabase. |
/ag CatDBGUID |
Hiermee vindt u de catalogus in de catalogusdatabase die wordt geïdentificeerd door de CatDBGUID. |
/all |
Controleert alle handtekeningen in een bestand met meerdere handtekeningen. |
/as |
Hiermee vindt u de catalogus met behulp van de catalogusdatabase voor systeemonderdelen (stuurprogramma's). |
/c CatFile |
Hiermee geeft u het catalogusbestand op naam. |
/d |
Hiermee geeft u op dat het tekenprogramma de beschrijving en de beschrijvings-URL moet afdrukken. |
/ds Index |
Controleert de handtekening op een opgegeven positie. |
/hash (SHA1 |SHA256 ) |
Hiermee geeft u een optioneel hash-algoritme dat moet worden gebruikt bij het zoeken naar een bestand in een catalogus. |
/kp |
Hiermee geeft u op dat verificatie moet worden uitgevoerd met het ondertekeningsbeleid voor stuurprogramma's in de kernelmodus. |
/ms |
Maakt gebruik van meerdere verificatiesemantiek. Dit is het standaardgedrag van een WinVerifyTrust-aanroep in Windows 8 en hoger. |
/o Versie |
Controleert het bestand op basis van de versie van het besturingssysteem. Versie heeft de volgende vorm: PlatformID:VerMajor.VerMinor.BuildNumber. PlatformID vertegenwoordigt de onderliggende waarde van een PlatformID opsommingslid. Belangrijk: Het gebruik van de /o switch wordt aanbevolen. Als /o dit niet is opgegeven, kan SignTool.exe onverwachte resultaten retourneren. Als u bijvoorbeeld de /o switch niet opneemt, worden systeemcatalogussen die correct worden gevalideerd op een ouder besturingssysteem mogelijk niet correct gevalideerd op een nieuwer besturingssysteem. |
/p7 |
Controleert PKCS #7-bestanden. Er worden geen bestaande beleidsregels gebruikt voor PKCS #7-validatie. De handtekening wordt gecontroleerd en er wordt een keten gebouwd voor het handtekeningcertificaat. |
/pa |
Hiermee geeft u op dat het standaardverificatiebeleid voor authenticode moet worden gebruikt. Als de /pa optie niet is opgegeven, gebruikt het tekenprogramma het verificatiebeleid voor Windows-stuurprogramma's. Deze optie kan niet worden gebruikt met de catdb opties. |
/pg PolicyGUID |
Hiermee geeft u een verificatiebeleid per GUID. Het PolicyGUID komt overeen met de ActionID van het verificatiebeleid. Deze optie kan niet worden gebruikt met de catdb opties. |
/ph |
Hiermee geeft u op dat het hulpprogramma voor ondertekenen de hash-waarden van de pagina moet afdrukken en verifiëren. |
/r RootSubjectName |
Hiermee geeft u de naam op van het onderwerp van het basiscertificaat waarnaar het handtekeningcertificaat moet worden gekoppeld. Deze waarde kan een subtekenreeks zijn van de volledige onderwerpnaam van het basiscertificaat. |
/tw |
Hiermee geeft u op dat er een waarschuwing moet worden gegenereerd als de handtekening geen tijdstempel heeft. |
Zie SignTool gebruiken om een bestandshandtekening te verifiëren voor gebruiksvoorbeelden.
Retourwaarde
Sign Tool retourneert een van de volgende afsluitcodes wanneer deze wordt beëindigd.
Afsluitcode | Beschrijving |
---|---|
0 | De uitvoering is geslaagd. |
1 | De uitvoering is mislukt. |
2 | De uitvoering is voltooid met waarschuwingen. |
Voorbeelden
Met de volgende opdracht wordt het catalogusbestand MyCatalogFileName.cat toegevoegd aan de systeemonderdeel- en stuurprogrammadatabase. De /u
optie genereert indien nodig een unieke naam om te voorkomen dat een bestaand catalogusbestand met de naam MyCatalogFileName.cat
wordt vervangen.
signtool catdb /v /u MyCatalogFileName.cat
Met de volgende opdracht wordt automatisch een bestand ondertekend met behulp van het beste certificaat.
signtool sign /a /fd SHA256 MyFile.exe
Met de volgende opdracht wordt een bestand digitaal ondertekend met behulp van een certificaat dat is opgeslagen in een PFX-bestand dat met een wachtwoord is beveiligd.
signtool sign /f MyCert.pfx /p MyPassword /fd SHA256 MyFile.exe
Met de volgende opdracht wordt een bestand digitaal ondertekend en een tijdstempel weergegeven. Het certificaat dat wordt gebruikt om het bestand te ondertekenen, wordt opgeslagen in een PFX-bestand.
signtool sign /f MyCert.pfx /t http://timestamp.digicert.com /fd SHA256 MyFile.exe
Met de volgende opdracht wordt een bestand ondertekend met behulp van een certificaat in het My
archief met een onderwerpnaam van My Company Certificate
.
signtool sign /n "My Company Certificate" /fd SHA256 MyFile.exe
Met de volgende opdracht wordt een ActiveX-besturingselement ondertekend en wordt informatie weergegeven in de browser wanneer de gebruiker wordt gevraagd het besturingselement te installeren.
Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html /fd SHA256 MyControl.exe
Met de volgende opdracht wordt een bestand gestempeld dat al digitaal is ondertekend.
signtool timestamp /t http://timestamp.digicert.com MyFile.exe
Met de volgende opdracht wordt een bestand gestempeld met een RFC 3161-tijdstempelserver.
signtool timestamp /tr http://timestamp.digicert.com /td SHA256 MyFile.exe
Met de volgende opdracht wordt gecontroleerd of een bestand is ondertekend.
signtool verify MyFile.exe
Met de volgende opdracht wordt een systeembestand gecontroleerd dat mogelijk is aangemeld in een catalogus.
signtool verify /a SystemFile.dll
Met de volgende opdracht wordt een systeembestand geverifieerd dat is aangemeld in een catalogus met de naam MyCatalog.cat
.
signtool verify /c MyCatalog.cat SystemFile.dll