Comment résoudre les erreurs de signature de package d’application

Un échec de déploiement d’application peut être dû à un échec de validation de la signature numérique du package d’application. Découvrez comment reconnaître ces échecs et ce qu’il faut faire à leur sujet.

Lorsque vous déployez une application Windows empaquetée, Windows tente toujours de valider la signature numérique sur le package d’application. Échecs lors du déploiement du bloc de validation de signature du package. Mais la raison pour laquelle le package n’a pas été validé peut ne pas être évidente. En particulier, si vous signez vos packages avec des certificats privés pour les tests locaux, vous devez souvent gérer l’approbation de ces certificats également. Une configuration d’approbation de certificat incorrecte peut entraîner des échecs de validation de signature.

Bon à savoir

Technologies

Prérequis

Instructions

Étape 1 : Examiner les journaux des événements à la recherche d’informations de diagnostic

Selon la façon dont vous avez tenté de déployer votre application, vous n’avez peut-être pas reçu un code d’erreur significatif pour l’échec du déploiement. Dans ce cas, vous pouvez généralement obtenir le code d’erreur directement à partir des journaux des événements.

Pour obtenir le code d’erreur à partir des journaux des événements

  1. Exécutez eventvwr.msc.

  2. Accédez à observateur d'événements (local)>Journaux des applications et des> servicesMicrosoft>Windows.

  3. Le premier journal de case activée est AppxPackagingOM>Microsoft-Windows-AppxPackaging/Operational.

  4. Les erreurs liées au déploiement sont enregistrées dans AppXDeployment-Server>Microsoft-Windows-AppXDeploymentServer/Operational.

    Pour les erreurs de déploiement, recherchez l’événement d’erreur le plus récent 404. Cet événement d’erreur vous fournit le code d’erreur et une description de la raison de l’échec du déploiement. Si un événement d’erreur 465 a précédé l’événement 404, un problème s’est produit à l’ouverture du package.

Si l’erreur 465 ne s’est pas produite, consultez général Résolution des problèmes d’empaquetage, de déploiement et d’interrogation des applications Windows. Sinon, reportez-vous à ce tableau pour connaître les codes d’erreur courants qui peuvent apparaître dans la chaîne d’erreur de l’événement d’erreur 465 :

Code d'erreur Error Description Suggestion
0x80073CF0 ERROR_INSTALL_OPEN_PACKAGE_FAILED Impossible d’ouvrir le package d’application. Cette erreur indique généralement un problème avec le package. Vous devez générer et signer à nouveau le package. Pour plus d’informations, consultez Utilisation d’App Packager.
0x80080205 APPX_E_INVALID_BLOCKMAP Le package d’application a été falsifié avec ou a une carte de blocs non valide. Le package est endommagé. Vous devez générer et signer à nouveau le package. Pour plus d’informations, consultez Utilisation d’App Packager.
0x800B0004 TRUST_E_SUBJECT_NOT_TRUSTED Le package d’application a été falsifié. Le contenu du package ne correspond plus à sa signature numérique. Vous devez signer à nouveau le package. Pour plus d’informations, consultez Comment signer un package d’application à l’aide de SignTool.
0x800B0100 TRUST_E_NOSIGNATURE Le package d’application n’est pas signé. Seuls les packages d’application Windows signés peuvent être déployés. Pour plus d’informations sur la signature d’un package d’application, consultez Comment signer un package d’application à l’aide de SignTool.
0x800B0109 CERT_E_UNTRUSTED_ROOT La chaîne de certificats utilisée pour signer le package d’application se termine par un certificat racine qui n’est pas approuvé. Passez à l’étape 2 pour résoudre les problèmes liés à l’approbation de certificat.
0x800B010A CERT_E_CHAINING Aucune chaîne de certificats n’a pu être générée pour une autorité racine approuvée à partir du certificat utilisé pour signer le package d’application. Passez à l’étape 2 pour résoudre les problèmes liés à l’approbation de certificat.

 

Étape 2 : Déterminer la chaîne de certificats utilisée pour signer le package d’application

Pour déterminer les certificats auxquels l’ordinateur local doit faire confiance, vous pouvez examiner la chaîne de certificats à la recherche de la signature numérique sur le package d’application.

Pour déterminer la chaîne de certificats

  1. Dans Explorateur de fichiers, cliquez avec le bouton droit sur le package d’application, puis sélectionnez Propriétés.
  2. Dans la boîte de dialogue Propriétés , sélectionnez l’onglet Signatures numériques , qui indique également si la signature peut être validée.
  3. Dans la liste Signature, sélectionnez la signature, puis cliquez sur le bouton Détails .
  4. Dans la boîte de dialogue Détails de la signature numérique , cliquez sur le bouton Afficher le certificat .
  5. Dans la boîte de dialogue Certificat , sélectionnez l’onglet Chemin de certification .

Le certificat supérieur de la chaîne est le certificat racine et le certificat inférieur est le certificat de signature. Si un seul certificat se trouve dans la chaîne, le certificat de signature est également son propre certificat racine. Vous pouvez déterminer le numéro de série de chaque certificat que vous utilisez ensuite avec Certutil :

Pour déterminer le numéro de série de chaque certificat

  1. Dans le volet Chemin d’accès de certification, sélectionnez le certificat, puis cliquez sur Afficher le certificat.
  2. Dans la boîte de dialogue Certificat, sélectionnez l’onglet Détails , qui affiche le numéro de série et d’autres propriétés utiles du certificat.

Étape 3 : Déterminer les certificats approuvés par l’ordinateur local

Pour pouvoir déployer un package d’application, il doit non seulement être approuvé dans le contexte de l’utilisateur, mais également dans le contexte de l’ordinateur local. Par conséquent, la signature numérique peut apparaître valide lorsqu’elle est affichée dans l’onglet Signatures numériques de l’étape précédente, mais elle échoue toujours lors du déploiement du package d’application.

Pour déterminer si la chaîne de certificats utilisée pour signer le package d’application est spécifiquement approuvée par l’ordinateur local

  1. Exécutez cette commande :

    CertUtil.exe -store Root rootCertSerialNumber
    
  2. Exécutez cette commande :

    CertUtil.exe -store TrustedPeople signingCertSerialNumber
    

Si vous ne spécifiez pas le numéro de série du certificat, Certutil répertorie tous les certificats approuvés par l’ordinateur local pour ce magasin.

L’installation du package peut échouer en raison d’erreurs de chaînage de certificats, même si le certificat de signature n’est pas auto-signé et que le certificat racine se trouve dans le magasin racine de l’ordinateur local. Dans ce cas, il peut y avoir un problème d’approbation pour les autorités de certification intermédiaires. Pour plus d’informations sur ce problème, consultez Utilisation des certificats.

Notes

Si vous avez déterminé que le package n’a pas pu être déployé parce que le certificat de signature n’est pas approuvé, n’installez pas le package, sauf si vous savez d’où il provient et que vous lui faites confiance.

Si vous souhaitez approuver manuellement l’application pour l’installation (par exemple, pour installer votre propre package d’application signé par test), vous pouvez ajouter manuellement le certificat à l’approbation de certificat d’ordinateur local à partir du package d’application.

Pour ajouter manuellement le certificat à l’approbation de certificat d’ordinateur local

  1. Dans Explorateur de fichiers, cliquez avec le bouton droit sur le package d’application, puis dans le menu contextuel contextuel, sélectionnez Propriétés.
  2. Dans la boîte de dialogue Propriétés , sélectionnez l’onglet Signatures numériques .
  3. Dans la liste Signature, sélectionnez la signature, puis cliquez sur le bouton Détails .
  4. Dans la boîte de dialogue Détails de la signature numérique , cliquez sur le bouton Afficher le certificat .
  5. Dans la boîte de dialogue Certificat , cliquez sur le bouton Installer le certificat... .
  6. Dans l’Assistant Importation de certificat, sélectionnez Ordinateur local , puis cliquez sur Suivant. Vous devez accorder des privilèges d’administrateur pour continuer.
  7. Sélectionnez Placer tous les certificats dans le magasin suivant, puis accédez au magasin de Personnes approuvé.
  8. Cliquez sur Suivant, puis sur Terminer pour terminer l’Assistant.

Après cet ajout manuel, vous pouvez voir que le certificat est désormais approuvé dans la boîte de dialogue Certificat .

Vous pouvez supprimer le certificat une fois que vous n’en avez plus besoin.

Pour supprimer le certificat

  1. Exécutez Cmd.exe en tant qu’administrateur.

  2. Dans l’invite de commandes administrateur, exécutez cette commande :

    Certutil -store TrustedPeople
    
  3. Recherchez le numéro de série du certificat que vous avez installé. Ce nombre est le certID.

  4. Exécutez cette commande :

    Certutil -delStore TrustedPeople certID
    

Nous vous recommandons d’éviter d’ajouter manuellement des certificats racines au magasin de certificats des autorités de certification racines approuvées de l’ordinateur local. Le fait d’avoir plusieurs applications signées avec des certificats qui s’enchaînent au même certificat racine, comme des applications métier, peut être plus efficace que l’installation de certificats individuels dans le magasin de Personnes approuvé. Le magasin de Personnes approuvé contient des certificats qui sont considérés comme approuvés par défaut et qui ne sont donc pas vérifiés par des autorités supérieures ou des listes ou chaînes d’approbation de certificats. Pour plus d’informations sur l’ajout de certificats au magasin de certificats d’autorités de certification racines approuvées, consultez Meilleures pratiques en matière de signature de code.

Considérations relatives à la sécurité

En ajoutant un certificat aux magasins de certificats d’ordinateurs locaux, vous affectez l’approbation de certificat de tous les utilisateurs sur l’ordinateur. Nous vous recommandons d’installer tous les certificats de signature de code que vous souhaitez pour tester les packages d’application dans le magasin de certificats Personnes approuvé. Supprimez rapidement ces certificats lorsqu’ils ne sont plus nécessaires pour éviter qu’ils ne soient utilisés pour compromettre l’approbation du système. Si vous créez vos propres certificats de test pour la signature de packages d’application, nous vous recommandons également de restreindre les privilèges associés au certificat de test. Pour plus d’informations sur la création de certificats de test pour la signature de packages d’application, consultez Comment créer un certificat de signature de package d’application.

Exemples

Créer un exemple de package d’application

Concepts

Résolution des problèmes d’empaquetage, de déploiement et d’interrogation des applications Windows

Tâches Certutil pour la gestion des certificats