SignTool (SignTool)

SignTool (Signtool.exe) est un outil CryptoAPI de ligne de commande qui signe numériquement les fichiers, vérifie les signatures dans les fichiers et horodate les fichiers.

    SignTool [Operation] [Options] [FileName ...]

Liste partielle des opérations, des options et des arguments

Opérations

CatDB
Configure SignTool pour mettre à jour une base de données de catalogue. SignTool ajoute des fichiers catalogue à une base de données ou supprime des catalogues d’une base de données. Par défaut, la commande CatDB ajoute les fichiers, dont les noms sont spécifiés par l’argument filename , à la base de données du composant système (pilote).

Notes

Les bases de données de catalogue sont utilisées pour la recherche automatique de fichiers de catalogue.

sign
Configure SignTool pour signer numériquement les fichiers dont les noms sont spécifiés par l’argument de nom de fichier .

timestamp
Configure SignTool pour horodater les fichiers dont les noms sont spécifiés par l’argument de nom de fichier .

verify
Configure SignTool pour vérifier la signature numérique des fichiers dont les noms sont spécifiés par l’argument de nom de fichier .

Options de l’opération CatDB

/d
Configure SignTool pour mettre à jour la base de données de catalogue. Si les options /d et /g ne sont pas utilisées, SignTool met à jour le composant système et la base de données du pilote.

/GGUID
Configure SignTool pour mettre à jour la base de données de catalogue identifiée par l’argument GUID .

/r
Configure SignTool pour supprimer chacun des fichiers de catalogue, dont les noms sont spécifiés par l’argument de nom de fichier , de la base de données de catalogue. Si cette option n’est pas spécifiée, SignTool ajoute les fichiers de catalogue spécifiés à la base de données du catalogue.

/u.
Configure SignTool pour générer un nom unique, si nécessaire, pour un fichier catalogue afin d’éviter tout conflit avec un fichier catalogue existant dans la base de données du catalogue. Si cette option n’est pas spécifiée, SignTool remplace tout catalogue existant qui porte le même nom que le catalogue ajouté.

Options d’opération de signature

/a Configure SignTool pour sélectionner automatiquement le meilleur certificat de signature. Si cette option n’est pas présente, SignTool s’attend à trouver un seul certificat de signature.

/ACCrossCertFileName
spécifie le nom d’un fichier de certificat croisé qui est utilisé avec un certificat de Publisher logiciel (SPC) nommé CertificateName et qui est installé dans le magasin de certificats StoreName. Cette option ne doit être utilisée que si le certificat de signature est un SPC.

/cCertTemplateName
Spécifie le nom du modèle de certificat (une extension Microsoft) pour le certificat de signature.

/CSPCSPName
Spécifie le fournisseur de services de chiffrement (CSP) qui contient le conteneur de clés privées.

/Ddesc
Spécifie une description du contenu signé.

URL /du
Spécifie une URL pour la description développée du contenu signé.

/FSignCertFile
Spécifie le certificat de signature dans un fichier. seul le format de fichier PFX (Personal Information Exchange) est pris en charge. Vous pouvez utiliser l’outil Pvk2Pfx pour convertir des fichiers SPC et pvk au format pfx.

Si le fichier est au format PFX protégé par un mot de passe, utilisez l’option /p pour spécifier le mot de passe. Si le fichier ne contient pas de clés privées, utilisez les options /CSP et /k pour spécifier respectivement le CSP et le nom du conteneur de clé privée.

/FD
Spécifie l’algorithme de condensat de fichiers à utiliser pour créer des signatures de fichiers. La valeur par défaut est SHA1.

/IIssuerName
Spécifie le nom de l'émetteur du certificat de signature. Cette valeur peut être une sous-chaîne du nom d'émetteur entier.

/Jdll
Spécifie le nom d’une DLL qui fournit les attributs de la signature.

/JPParameterName
Spécifie un paramètre qui est passé à la DLL spécifiée par la commande /j .

/KCPrivKeyContainerName
Spécifie le nom du conteneur de clé de la clé privée.

/NSubjectName
Spécifie le nom de l'objet du certificat de signature. Cette valeur peut être une sous-chaîne du nom de l'objet entier.

/nph
En cas de prise en charge, supprime les hachages de pages pour les fichiers exécutables. La valeur par défaut est déterminée par la variable d'environnement SIGNTOOL_PAGE_HASHES et par la version de wintrust.dll. Cette option est ignorée pour les fichiers non PE.

/Pmot de passe
Spécifie le mot de passe à utiliser lors de l'ouverture d'un fichier PFX. Un fichier PFX peut être spécifié à l’aide de l’option /f

/P7chemin d’accès
Spécifie qu'un fichier PKCS (Public Key Cryptography Standards) #7 est produit pour chaque fichier de contenu spécifié. Les fichiers PKCS #7 sont nommés chemin\nom de fichier.p7.

valeur /p7ce
Spécifie des options pour le contenu PKCS #7 signé. Affectez à Value la valeur « Embedded » pour incorporer le contenu signé dans le fichier PKCS #7 ou la valeur « DetachedSignedData » pour produire la partie signée des données d'un fichier PKCS #7 détaché. Si l’option /p7ce n’est pas utilisée, le contenu signé est incorporé par défaut.

OID /p7co
Spécifie l'identificateur d'objet (OID) qui identifie le contenu PKCS #7 signé.

/pH En cas de prise en charge, génère des hachages de page pour les fichiers exécutables.

/RRootSubjectName
Spécifie le nom du sujet du certificat racine auquel le certificat de signature doit être lié. Cette valeur peut être une sous-chaîne du nom de l'objet entier du certificat racine.

/SStoreName
Spécifie le nom du magasin de certificats à ouvrir lors de la recherche du certificat à utiliser pour la signature des fichiers. Si cette option n’est pas spécifiée, le magasin de certificats My est ouvert.

hachage /SHA1
Spécifie le hachage SHA1 du certificat de signature.

/sm
Configure SignTool pour utiliser un magasin de certificats de l’ordinateur au lieu d’un magasin de certificats de l’utilisateur.

/TURL
Spécifie une URL vers un serveur d’horodatage. Si cette option n’est pas spécifiée, le fichier signé n’est pas horodaté. Un fichier de catalogue ou un fichier de pilote doit être horodaté, car si la clé du signataire est compromise, l’horodateur fournit les informations nécessaires pour révoquer la clé qui a été utilisée pour signer le fichier.

/TDALG
Utilisé avec l’option/TR pour demander un algorithme Digest utilisé par le serveur d’horodatage RFC 3161.

URL /TR
Spécifie l'URL du serveur d'horodatage RFC 3161. Si cette option (ou /t) n’est pas présente, le fichier signé ne sera pas horodaté. Un avertissement est généré si l'horodatage échoue. Cette option ne peut pas être utilisée avec l’option /t .

/Uutilisation
Spécifie l'utilisation améliorée de la clé (EKU) qui doit être présente dans le certificat de signature. La valeur de l'utilisation peut être spécifiée par un OID ou une chaîne. L'utilisation par défaut est « Signature du code » (1.3.6.1.5.5.7.3.3).

/UW spécifie l’utilisation de « Windows vérification des composants système » (1.3.6.1.4.1.311.10.3.6).

Options d’opération d’horodatage

/P7 Horodatage des fichiers #7 PKCS.

/TURL
Spécifie l’URL du serveur d’horodatage. Le fichier en cours d’horodatage doit avoir été signé précédemment

/TDALG
Demande un algorithme de condensat utilisé par le serveur d’horodatage RFC 3161. /TD est utilisé avec l’option /TR .

l'index/TP
Horodate la signature à l'index.

/TRALG
Demande un algorithme de condensat utilisé par le serveur d’horodatage RFC 3161. /TD est utilisé avec l’option /TR .

Options de vérification de l’opération

/a
Spécifie que toutes les méthodes peuvent être utilisées pour vérifier le fichier. En premier lieu, une recherche est effectuée dans les bases de données de catalogue pour déterminer si le fichier est signé dans un catalogue. Si le fichier n’est signé dans aucun catalogue, SignTool tente de vérifier la signature incorporée du fichier. Cette option est recommandée lors de la vérification de fichiers qui peuvent être ou non signés dans un catalogue.

/ad
Spécifie que seule la base de données de catalogue par défaut est recherchée dans le catalogue dans lequel le fichier a été connecté.

All
Vérifie toutes les signatures dans un fichier contenant plusieurs signatures.

/as
Spécifie que seule la base de données du catalogue du composant système (pilote) est recherchée dans le catalogue dans lequel le fichier a été connecté.

/AGCatDBGUID
Spécifie que seule la base de données de catalogue, identifiée à l’aide de l’argument CatDBGUID , est recherchée dans le catalogue dans lequel le fichier a été connecté.

/cCatalogFileName
Spécifie le nom d’un fichier de catalogue.

/d Spécifie que l’outil signature doit imprimer la description et l’URL de description.

l'index/DS
Vérifie la signature à un emplacement spécifié.

/hash {SHA1SHA256}
Spécifie un algorithme de hachage facultatif à utiliser lors de la recherche d'un fichier dans un catalogue.

/kp
configure SignTool pour vérifier que la signature numérique de chacun des fichiers spécifiés par l’argument de nom de fichier est conforme à la stratégie de signature de code en mode noyau et aux exigences de signature d’installation de périphérique PnP de Windows Vista et les versions ultérieures de Windows. Si cette option n’est pas spécifiée, SignTool vérifie uniquement qu’une signature est conforme aux exigences de signature d’installation du périphérique PnP.

/ms.
Utilise plusieurs sémantiques de vérification. il s’agit du comportement par défaut d’un appel de fonction WinVerifyTrust sur Windows 8 et versions ultérieures.

version /o
Vérifie le fichier en fonction de la version du système d’exploitation. Le format de l’argument version est PlatformID : VerMajor. vermine. BuildNumber

L’utilisation de l’option /o est recommandée. Si /o n’est pas spécifié, SignTool peut retourner des résultats inattendus. Par exemple, si vous n’incluez pas l’option /o , les catalogues système qui valident correctement sur un système d’exploitation plus ancien peuvent ne pas valider correctement sur un système d’exploitation plus récent.

/p7
Vérifie les fichiers PKCS #7. Aucune stratégie existante n'est utilisée pour la validation PKCS #7. La signature est vérifiée et une chaîne est générée pour le certificat de signature.

/pa
Configure SignTool pour vérifier que la signature numérique de chacun des fichiers spécifiés par l’argument de nom de fichier est conforme aux exigences de signature d’installation du périphérique PNP.

Notes

Cette option ne peut pas être utilisée avec les options CatDB .

/PGPolicyGUID
Spécifie une stratégie de vérification par GUID. PolicyGUID correspond à la valeur ActionID de la stratégie de vérification.

Notes

Cette option ne peut pas être utilisée avec les options CatDB .

/pH Spécifie que l’outil signature doit imprimer et vérifier les valeurs de hachage de la page.

/RRootSubjectName
Spécifie le nom du sujet du certificat racine auquel le certificat de signature doit être lié. Cette valeur peut être une sous-chaîne du nom de l'objet entier du certificat racine.

/tw
Spécifie qu’un avertissement est généré si la signature n’est pas horodatée.

Options générales

/q
Configure SignTool pour n’afficher aucune sortie en cas d’exécution réussie et une sortie minimale pour l’échec de l’exécution.

/v
Configure SignTool pour afficher la version détaillée des messages d’opération et d’avertissement.

/?
Configure SignTool pour afficher les informations d’aide dans une fenêtre de commande.

Nom du fichier...
Spécifie une liste d’un ou plusieurs noms de fichiers. En fonction de la commande, SignTool signera, horodatagera ou vérifiera les fichiers spécifiés. Si la commande CatDB est utilisée, SignTool ajoute ou supprime les fichiers spécifiés dans une base de données de catalogue.

Pour les commandes Sign, timestampet verify , un fichier peut être un fichier catalogue pour un package de pilotes ou un fichier de pilote.

Pour la commande CatDB , un fichier doit être un fichier catalogue pour un package de pilotes.

Remarques

SignTool prend en charge un grand nombre d’options. Les options décrites dans cette rubrique sont limitées à celles que vous pouvez utiliser pour signer ou vérifier un package de pilotes ou un fichier de pilote.

Pour obtenir la liste complète des paramètres SignTool, consultez le site Web de Microsoft SignTool .

Pour plus d’informations sur la signature des fichiers, consultez le site Web Microsoft Cryptography Tools .

Une version 32 bits de SignTool se trouve dans le dossier Bin\I386 du kit WDK. Une version 64 bits de l’outil se trouve dans les dossiers bin\amd64 et bin\ia64 du kit WDK.

Exemples

voici un exemple de la façon de signer le fichier catalogue d’un package de pilotes à l’aide d’un certificat de Publisher logiciel (SPC) et d’un certificat croisé correspondant. cet exemple est valide pour la signature d’un package de pilotes pour les versions 64 bits de Windows Vista et les versions ultérieures de Windows, qui appliquent la stratégie de signature de code en mode noyau. L’exemple signe le fichier catalogue du package de pilotes AbcCatFileName.cat. Pour signer le fichier catalogue, l’exemple utilise le certificat Cross-Certificate AbcCrossCertificate et le certificat AbcSPCCertificate. Le certificat AbcSPCCertificate se trouve dans le magasin de certificats AbcCertificateStore.

L’exemple utilise également un serveur d’horodatage disponible publiquement pour signer le fichier catalogue. Le serveur d’horodatage est fourni par DigiCert et son URL est http://timestamp.digicert.com .

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcCatFileName.cat

L’exemple suivant montre comment incorporer une signature dans un fichier de pilote à l’aide d’un SPC et d’un certificat croisé. Tous les paramètres sont les mêmes que dans l’exemple qui signe un fichier catalogue, sauf que le fichier signé est AbcDriverFile.sys au lieu du fichier catalogue AbcCatFileName.cat.

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcDriverFile.sys

Voici un exemple de la façon de signer le fichier catalogue d’un package de pilotes à l’aide d’un certificat de version commerciale ou d’un certificat de test commercial. cet exemple est valide pour la signature d’un package de pilotes pour les versions 32 bits de Windows Vista et les versions ultérieures de Windows, qui n’appliquent pas la stratégie de signature de code en mode noyau. L’exemple signe le fichier catalogue du package de pilotes CatalogFileName.cat. L’exemple utilise le certificat de test AbcTestCertificate, situé dans le magasin de certificats TestCertificateStore, pour signer le fichier catalogue.

L’exemple utilise également un serveur d’horodatage disponible publiquement pour signer le fichier catalogue. Le serveur d’horodatage est fourni par DigiCert et son URL est http://timestamp.digicert.com .

SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.digicert.com CatalogFileName.cat

Vérification des exemples

L’exemple suivant montre comment vérifier que la signature du fichier catalogue d’un package de pilotes est conforme à la stratégie de signature de code en mode noyau et aux exigences de signature d’installation de périphérique PNP. L’exemple vérifie la signature du fichier catalogue AbcCatalogFile.cat.

SignTool verify /kp CatalogFileName.cat

L’exemple suivant montre comment vérifier que la signature d’un fichier figurant dans le fichier catalogue d’un package de pilotes est conforme à la stratégie de signature de code en mode noyau et aux exigences de signature d’installation de périphérique PnP. L’exemple vérifie la signature du fichier AbcDriverPackage. inf, qui doit avoir une entrée d’empreinte numérique dans le fichier catalogue CatalogFileName.cat.

SignTool verify /kp /c CatalogFileName.cat AbcDriverPackage.inf

l’exemple suivant montre comment vérifier qu’une signature incorporée est conforme à la stratégie de signature de code en mode noyau sur Windows Vista et les versions ultérieures de Windows. L’exemple vérifie la signature qui est incorporée dans le fichier de pilote AbcDriverFile.sys.

SignTool verify /kp AbcDriverFile.sys

L’exemple suivant montre comment vérifier que la signature du fichier catalogue d’un package de pilotes est conforme aux exigences de signature d’installation du périphérique PNP. L’exemple vérifie la signature du fichier catalogue CatalogFileName.cat.

SignTool verify /pa CatalogFileName.cat

Exemple d’ajout d’un fichier catalogue à la base de données du composant système (pilote)

Voici un exemple d’utilisation de SignTool pour ajouter le fichier de catalogue CatalogFileName.cat à la base de données du composant système (pilote). L’option /v configure SignTool pour fonctionner en mode détaillé et l’option /U configure SignTool pour générer un nom unique pour le fichier catalogue ajouté, si nécessaire, pour empêcher le remplacement d’un fichier catalogue existant qui porte le même nom que CatalogFileName.cat.

SignTool catdb /v /u CatalogFileName.cat