Partager via


SignTool

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

    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).

Remarque

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

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

timestamp
Configure SignTool pour horodatager les fichiers dont les noms sont spécifiés par l’argument FileName .

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

Options d’opération Catdb

/d
Configure SignTool pour mettre à jour la base de données du catalogue. Si aucune option /d ni /g n’est utilisée, SignTool met à jour le composant système et la base de données du pilote.

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

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

/u
Configure SignTool pour générer un nom unique, si nécessaire, pour qu’un fichier catalogue empêche un conflit avec un fichier catalogue existant dans la base de données de catalogue. Si cette option n’est pas spécifiée, SignTool remplace tout catalogue existant portant le même nom que celui 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.

/ac CrossCertFileName
Spécifie le nom d’un fichier inter-certificats utilisé avec un certificat DPC (Software Publisher Certificate) nommé CertificateName et installé dans le magasin de certificats StoreName. Cette option ne doit être utilisée que si le certificat de signature est un SPC.

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

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

/d Desc
Spécifie une description du contenu signé.

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

/f SignCertFile
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 les 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 le nom du conteneur de clés privées et csp, respectivement.

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

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

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

/jp ParameterName
Spécifie un paramètre passé à la DLL spécifiée par la commande /j .

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

/n SubjectName
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.

/p Password
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

Chemin /p7
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 path\filename.p7.

/p7ce, valeur
Spécifie des options pour le contenu PKCS #7 signé. Remplacez Value par « Embedded » pour incorporer le contenu signé dans le fichier PKCS #7 ou par « 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.

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

/ph Si pris en charge, génère des hachages de page pour les fichiers exécutables.

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

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

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

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

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

/td alg
Utilisé avec l’option /tr pour demander un algorithme digest utilisé par le serveur d’horodatage RFC 3161.

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

/u Utilisation
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 « Vérification des composants système Windows » (1.3.6.1.4.1.311.10.3.6).

Options d’opération d’horodatage

/p7 Horodatages PKCS #7 fichiers.

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

/td alg
Demande un algorithme de condensat utilisé par le serveur d’horodatage RFC 3161. /td est utilisé avec l’option /tr .

/tp index
Horodate la signature à l’index.

/tr alg
Demande un algorithme de condensat utilisé par le serveur d’horodatage RFC 3161. /td est utilisé avec l’option /tr .

Vérifier les options d’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 connecté à 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.

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

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

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

/ag CatDBGUID
Spécifie que seule la base de données du catalogue, identifiée par l’argument CatDBGUID , est recherchée pour le catalogue auquel le fichier a été connecté.

/c CatalogFileName
Spécifie le nom d’un fichier catalogue.

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

/ds index
Vérifie la signature à un emplacement spécifié.

/hash {SHA1|SHA256}
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 FileName est conforme à la stratégie de signature de code en mode noyau et aux exigences de signature d’installation de l’appareil PnP de Windows Vista et 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 de l’appareil 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.

/o Version
Vérifie le fichier en fonction de la version du système d’exploitation. Le format de l’argument Version est PlatformID :VerMajor.VerMinor.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 des systèmes d’exploitation plus anciens peuvent ne pas être validés 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.

/papa
Configure SignTool pour vérifier que la signature numérique de chacun des fichiers spécifiés par l’argument FileName est conforme aux exigences de signature d’installation de l’appareil PnP.

Remarque

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

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

Remarque

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

/ph Spécifie que l’outil sign doit imprimer et vérifier les valeurs de hachage de page.

/r RootSubjectName
Spécifie le nom de l’objet du certificat racine auquel le certificat de signature doit être chaîné. 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 afficher aucune sortie lors de l’exécution réussie et une sortie minimale pour l’exécution ayant échoué.

/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.

Fichier...
Spécifie une liste d’un ou plusieurs noms de fichiers. Selon la commande, SignTool signe, timestamp ou vérifie les fichiers spécifiés. Si la commande catdb est utilisée, SignTool ajoute ou supprime les fichiers spécifiés d’une base de données de catalogue.

Pour le signe, l’horodatage et la vérification des commandes, 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.

Notes

SignTool prend en charge un grand nombre d’options. Les options décrites dans cette rubrique sont limitées aux options 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 Microsoft SignTool .

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

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

Exemples

Voici un exemple de signature du fichier catalogue d’un package de pilotes à l’aide d’un certificat SPC (Software Publisher Certificate) et d’un certificat croisé correspondant. Cet exemple est valide pour signer un package de pilotes pour les versions 64 bits de Windows Vista et 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 croisé 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

Voici un exemple d’incorporation d’une signature dans un fichier de pilote à l’aide d’un SPC et d’un certificat croisé. Tous les paramètres sont identiques à ceux de 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 signature du 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 signer 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 d’exemples

Voici un exemple montrant 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 l’appareil PnP. L’exemple vérifie la signature du fichier catalogue AbcCatalogFile.cat.

SignTool verify /kp CatalogFileName.cat

Voici un exemple montrant comment vérifier que la signature d’un fichier répertorié 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 l’appareil 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

Voici un exemple montrant 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 incorporée dans le fichier de pilote AbcDriverFile.sys.

SignTool verify /kp AbcDriverFile.sys

Voici un exemple montrant comment vérifier que la signature du fichier catalogue d’un package de pilotes est conforme aux exigences de signature d’installation de l’appareil 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 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 déjà existant portant le même nom que CatalogFileName.cat.

SignTool catdb /v /u CatalogFileName.cat