Signer un package d’application à l’aide de SignTool

SignTool est un outil en ligne de commande utilisé pour signer numériquement un package d’application ou un bundle avec un certificat. Le certificat peut être créé par l’utilisateur (à des fins de test) ou émis par une entreprise (à des fins de distribution). La signature d’un package d’application permet à l’utilisateur de vérifier que les données de l’application n’ont pas été modifiées après sa signature, tout en confirmant également l’identité de l’utilisateur ou de l’entreprise qui l’a signée. SignTool peut signer des packages et des bundles d’applications chiffrés ou non chiffrés.

Important

Si vous avez utilisé Visual Studio pour développer votre application, il est recommandé d’utiliser l’Assistant Visual Studio pour créer et signer votre package d’application. Pour plus d’informations, consultez Empaqueter une application UWP avec Visual Studio et Empaqueter une application de bureau à partir du code source à l’aide de Visual Studio.

Pour plus d’informations sur la signature de code et les certificats en général, consultez Présentation de la signature de code.

Prérequis

  • Une application empaquetée
    Pour en savoir plus sur la création manuelle d’un package d’application, consultez Créer un package d’application avec l’outil MakeAppx.exe.

  • Un certificat de signature valide
    Pour plus d’informations sur la création ou l’importation d’un certificat de signature valide, consultez Créer ou importer un certificat pour la signature de package.

  • SignTool.exe
    En fonction de votre chemin d’installation du Kit de développement logiciel (SDK), il s’agit de l’emplacement où SignTool se trouve sur votre PC Windows 10 :

    • x86 : C :\Program Files (x86)\Windows Kits\10\bin\<sdk version>\x86\SignTool.exe
    • x64 : C :\Program Files (x86)\Windows Kits\10\bin\<sdk version>\x64\SignTool.exe

Utilisation de SignTool

SignTool peut être utilisé pour signer des fichiers, vérifier des signatures ou des horodatages, supprimer des signatures, etc. Pour signer un package d’application, nous allons nous concentrer sur la commande de signature . Pour plus d’informations sur SignTool, consultez la page de référence SignTool .

Déterminer l’algorithme de hachage

Lorsque vous utilisez SignTool pour signer votre package d’application ou votre offre groupée, l’algorithme de hachage utilisé dans SignTool doit être le même algorithme que celui que vous avez utilisé pour empaqueter votre application. Par exemple, si vous avez utilisé MakeAppx.exe pour créer votre package d’application avec les paramètres par défaut, vous devez spécifier SHA256 lors de l’utilisation de SignTool , car il s’agit de l’algorithme par défaut utilisé par MakeAppx.exe.

Pour savoir quel algorithme de hachage a été utilisé lors de l’empaquetage de votre application, extrayez le contenu du package d’application et inspectez le fichier AppxBlockMap.xml. Pour savoir comment décompresser/extraire un package d’application, consultez Extraire des fichiers à partir d’un package ou d’un ensemble. La méthode de hachage se trouve dans l’élément BlockMap et a ce format :

<BlockMap xmlns="http://schemas.microsoft.com/appx/2010/blockmap"
HashMethod="http://www.w3.org/2001/04/xmlenc#sha256">

Ce tableau montre chaque valeur hashMethod et son algorithme de hachage correspondant :

Valeur HashMethod Algorithme de hachage
http://www.w3.org/2001/04/xmlenc#sha256 SHA256
http://www.w3.org/2001/04/xmldsig-more#sha384 SHA384
http://www.w3.org/2001/04/xmlenc#sha512 SHA512

Remarque

Étant donné que l’algorithme par défaut de SignTool est SHA1 (non disponible dans MakeAppx.exe), vous devez toujours spécifier un algorithme de hachage lors de l’utilisation de SignTool.

Signer le package d’application

Une fois que vous avez tous les prérequis et que vous avez déterminé quel algorithme de hachage a été utilisé pour empaqueter votre application, vous êtes prêt à le signer.

La syntaxe de ligne de commande générale pour la signature de package SignTool est la suivante :

SignTool sign [options] <filename(s)>

Le certificat utilisé pour signer votre application doit être un fichier .pfx ou être installé dans un magasin de certificats.

Pour signer votre package d’application avec un certificat à partir d’un fichier .pfx, utilisez la syntaxe suivante :

SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.msix

Notez que l’option /a permet à SignTool de choisir automatiquement le meilleur certificat.

Si votre certificat n’est pas un fichier .pfx, utilisez la syntaxe suivante :

SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.msix

Vous pouvez également spécifier le hachage SHA1 du certificat souhaité au lieu du nom du certificat> à l’aide de <cette syntaxe :

SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.msix

Pour plus d’exemples, consultez Utilisation de SignTool pour signer un fichier

Notez que certains certificats n’utilisent pas de mot de passe. Si votre certificat n’a pas de mot de passe, omettez « /p <Votre mot de passe> » dans les exemples de commandes.

Une fois votre package d’application signé avec un certificat valide, vous êtes prêt à charger votre package dans le Windows Store. Pour plus d’informations sur le chargement et l’envoi d’applications dans le Windows Store, consultez soumissions d’applications.