Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les types d’erreurs les plus courants lors de l’utilisation de SignTool sont internes et ressemblent généralement à ceci :
SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B)
Si le code d’erreur commence par 0x8008, par exemple 0x80080206 (APPX_E_CORRUPT_CONTENT), le package en cours de signature n’est pas valide. Si vous obtenez ce type d’erreur, vous devez reconstruire le package et réexécuter SignTool .
SignTool dispose d’une option de débogage permettant d’afficher les erreurs de certificat et le filtrage. Pour utiliser la fonctionnalité de débogage, placez l’option /debug directement après sign, suivie de la commande SignTool complète.
SignTool sign /debug [options]
Une erreur plus courante est 0x8007000B. Pour ce type d’erreur, vous trouverez plus d’informations dans le journal des événements.
Pour trouver plus d’informations dans le journal des événements :
- Exécuter Eventvwr.msc
- Ouvrez le journal des événements : observateur d'événements (local) -> Applications et journaux des services -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operational
- Rechercher l’événement d’erreur le plus récent
L’erreur interne 0x8007000B correspond généralement à l’une des valeurs suivantes :
| ID d'événement | Exemple de chaîne d’événement | Suggestion |
|---|---|---|
| 150 | erreur 0x8007000B : le nom de l’éditeur du manifeste d’application (CN=Contoso) doit correspondre au nom du sujet du certificat de signature (CN=Contoso, C=US). | Le nom de l’éditeur de manifeste de l’application doit correspondre exactement au nom de l’objet de la signature. |
| 151 | erreur 0x8007000B : la méthode de hachage de signature spécifiée (SHA512) doit correspondre à la méthode de hachage utilisée dans la carte de blocs de package d’application (SHA256). | Le hashAlgorithm spécifié dans le paramètre /fd est incorrect. Réexécutez SignTool en utilisant un algorithme de hachage qui correspond à la carte des blocs du package de l'application (utilisé pour créer le package de l'application). |
| 152 | erreur 0x8007000B : le contenu du package d’application doit être validé par rapport à son mappage de blocs. | Le package d’application est endommagé et doit être reconstruit pour générer une nouvelle carte de blocs. Pour plus d’informations sur la création d’un package d’application, consultez Créer un package d’application avec l’outil MakeAppx.exe |
Une autre erreur courante est 0x80080057. Vous pouvez rencontrer les problèmes suivants lorsque vous essayez de signer un fichier exécutable portable (PE) à l’aide de l’outil SignTool sur Windows :
Échec de la signature d'un fichier PE de 4 gigaoctets (Go) ou plus. Lorsque vous essayez de signer, vous recevez un message d’erreur « paramètre non valide (0x80080057) ».
Pour les fichiers dont la taille est supérieure à 4 Go, le hachage généré peut ne pas être précis même si SignTool peut signer le fichier.
Remarque
Cela est particulièrement vrai pour les fichiers .cat.
Ce problème se produit pour les fichiers PE tels que .exe, .sys, etc. Ce problème se produit en raison d’une variable ULONG dans l’en-tête PE qui spécifie la taille de l’image. (La taille de l’image est de 2 Go pour les systèmes d’exploitation de bas niveau, tels que Vista et versions antérieures.) Il s’agit d’une limitation de conception depuis 1996. La limite maximale pour cette valeur est de 4 Go pour les fichiers PE, tels que .exe et .sys. Bien que les fichiers .cat soient généralement signables, le hachage interne généré peut ne pas être exact.
Pour contourner ce problème, assurez-vous que tout fichier PE que vous essayez de signer est inférieur à 4 Go. Il s’agit d’une limitation de conception connue du format PE sans correctif planifié, en raison de contraintes de compatibilité descendante.
Remarque
Ce problème n’est pas spécifique à SignTool. La conception de l’en-tête PE est limitée à 4 Go pour Windows 7 et versions ultérieures Windows, quel que soit l’outil utilisé.
Questions fréquemment posées (FAQ)
Q1 : Quelle est la limite actuelle de taille de fichier officielle pour une signature numérique (et la contre-signature de horodatage) sur Windows ?
A1 : Pour les fichiers PE tels que .exe et .sys, la taille maximale de fichier pour la signature est de 4 Go.
Q2 : Existe-t-il une version particulière de Windows, telle que Windows Server 2016, qui a la capacité la plus élevée de signer des fichiers volumineux ?
A2 : Non, le problème affecte toutes les versions de Windows.
Q3 : La version 64 bits de Signtool prend-elle mieux en charge cette fonctionnalité que la version 32 bits ?
R : Non, la version 64 bits de SignTool utilise les mêmes valeurs que la version 32 bits. Par conséquent, le problème reste en 64 bits.
Q4 : Les clients qui utilisent une version 32 bits de Windows peuvent-ils rencontrer des problèmes potentiels s’ils essaient d’utiliser des fichiers signés à l’aide de la version 64 bits de SignTool ?
R : Non. Toutefois, les limitations restent quelle que soit la version de SignTool utilisée.
Q5 : Devrions-nous utiliser un autre outil ou méthode de signature ?
R : Oui. Signatures de confiance Azure est le service de signature de code managé de Microsoft et est l'alternative moderne recommandée à la gestion de vos propres certificats. Il gère la gestion du cycle de vie des certificats et s’intègre aux pipelines CI/CD. Azure Key Vault est une autre option pour la signature avec des certificats stockés dans le cloud. Pour les scénarios hors connexion ou libre-service, SignTool reste l’outil standard.