Signature d'un package d'application (applications du Windows Store)

Par défaut, tous les packages d'application générés par Visual Studio sont signés avec un certificat de test. Lorsque vous créez un package, Visual Studio génère un dossier qui inclut le package signé lui-même. Le fichier de certificat (.cer) inclus dans ce dossier contient la clé publique utilisée pour signer le package. Cette clé doit être installée sur l'ordinateur avant l'installation du package d'application.

Génération du certificat de test

Le fichier de certificat (.pfx) est généré et ajouté au projet lors de la création de celui-ci.

Le champ Objet du certificat a pour valeur l'attribut Publisher de l'élément Identity du fichier de manifeste source (.appxmanifest).

  • Si vous créez un package local, la valeur par défaut de l'attribut Publisher est votre nom d'utilisateur.

  • Si vous créez un package pour Windows Store ou que vous associez votre application à celui-ci, l'attribut Publisher a la valeur Publisher ID obtenue à partir de votre compte du développeur dans le Store lorsque vous vous connectez au moment de la création du package.

Le processus de création du certificat ajoute également une propriété au fichier projet :

<PackageCertificateKeyFile> RisingStar_TemporaryKey.pfx </PackageCertificateKeyFile>

La valeur de PackageCertificateKeyFile correspond au chemin d'accès relatif ou au chemin d'accès complet du certificat de source lui-même.

En cas d'absence du certificat, ce dernier est créé lorsque le package est généré à partir du menu Stocker, mais il n'est pas créé lorsque le package est généré à partir d'une invite de commande. Lorsque Visual Studio crée un certificat, les valeurs des propriétés suivantes sont définies :

  • La valeur de l'extension Contraintes de base a la valeur Type d'objet=Entité de fin.

    Notes

    L'extension des contraintes de base identifie si l'objet du certificat est une autorité de certification (CA). Cette extension définit également la profondeur maximale des chemins d'accès de certification valides qui contiennent ce certificat. La propriété Contraintes de base spécifie si la clé publique certifiée peut vérifier des signatures de certificat.

  • La valeur de l'extension Utilisation améliorée de la clé (EKU, Enhanced Key Usage) est définie sur Signature du code.

Les certificats sont valides pendant un an à compter de leur date de création. Pour plus d'informations sur le renouvellement d'un certificat, consultez Renouvellement d'un certificat.

Conseil

Si une erreur qui ressemble à « Le certificat spécifié n'est pas valide, car il a expiré ou a rencontré un autre problème. » s'affiche pendant le processus de signature, utilisez le concepteur de manifestes pour créer un certificat de test qui remplace l'ancien.

Validation des certificats

Lors de l'empaquetage, Visual Studio valide le certificat spécifié comme suit :

  • Vérifie la présence de l'extension Contraintes de base et sa valeur, qui doit être Type d'objet=Entité de fin ou non spécifiée.

  • Vérifie la valeur de la propriété Utilisation améliorée de la clé (EKU, Enhanced Key Usage), qui doit contenir la Signature du code et qui peut également contenir la Signature permanente. Toute autre utilisation améliorée de la clé (EKU) est interdite.

  • Vérifie la valeur de la propriété Utilisation de la clé, qui doit être Annuler la définition ou Signature numérique.

  • Vérifie l'existence d'une clé privée.

  • Vérifie si le certificat est actif, n'a pas expiré et n'a pas été révoqué.

Dans certains cas, vous devrez peut-être vérifier avec précision quel certificat est utilisé et, par conséquent, quels contrôles de validation sont exécutés sur le certificat. La propriété MSBuild EnableSigningChecks vérifie les contrôles de certificat qui sont exécutés parmi ceux indiqués ci-dessus. Si vous affectez la valeur True (valeur par défaut) à la propriété, Visual Studio effectue tous les contrôles. Si vous affectez la valeur False à la propriété, Visual Studio effectue uniquement les tâches suivantes :

  • Vérifie s'il existe une clé privée.

  • Vérifie si la valeur de la propriété Utilisation améliorée de la clé contient Signature du code.

  • Vérifie si le certificat est actif, n'a pas expiré et n'a pas été révoqué.

Notes

Lorsque EnableSignignChecks a la valeur False, le script PowerShell ne fonctionne pas, car le certificat personnalisé peut ne pas être conforme à toutes les règles requises pour que le script installe le package d'application. Pour plus d'informations, consultez Partage d'un package d'application localement (applications du Windows Store).

Sélection d'un autre certificat

Visual Studio crée automatiquement un certificat lorsque le projet est créé, mais vous pouvez également créer votre propre certificat ou utiliser un certificat existant pour signer un package.

Pour créer ou utiliser un autre certificat

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du fichier .appxmanifest, sélectionnez Ouvrir avec, puis Concepteur de manifeste d'application.

  2. Dans Concepteur de manifeste d'application, sélectionnez l'onglet Packages, puis cliquez sur le bouton Choisir un certificat.

  3. Dans la boîte de dialogue Choisir un certificat, développez la liste Configurer le certificat, puis sélectionnez l'une des options suivantes :

    • Choisir dans le magasin de certificats
      Sélectionnez l'un des certificats Personal dans le magasin de certificats situé sur le système d'exploitation.

    • À partir d'un fichier
      Sélectionnez un fichier de certificat existant dans le système de fichiers.

    • Créer un certificat de test
      Créez un certificat avec un Publisher ID de votre choix. Vous pouvez également créer un mot de passe.

Quelle que soit l'option choisie, un fichier de certificat est ajouté au projet et les propriétés de projet PackageCertificateThumbprint et PackageCertificateKeyFile sont mises à jour en conséquence.

Notes

Si une erreur qui ressemble à « Le certificat spécifié n'est pas valide, car il a expiré ou a rencontré un autre problème. » s'affiche pendant le processus de signature, utilisez le concepteur de manifestes pour créer un certificat personnalisé qui remplace l'ancien.

Renouvellement d'un certificat

Le certificat par défaut généré par Visual Studio expire un an après sa date de création. Avant l'expiration du certificat, vous devez utiliser le concepteur de manifeste d'application pour régénérer le certificat ou, comme le décrit la procédure précédente, fournir un autre certificat valide.

Pour renouveler le certificat

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du fichier .appxmanifest, sélectionnez Ouvrir avec, puis Concepteur de manifeste d'application.

  2. Dans Concepteur de manifeste d'application, sélectionnez l'onglet Packages, puis cliquez sur le bouton Choisir un certificat.

  3. Dans la boîte de dialogue Choisir un certificat, développez la liste Configurer le certificat, puis sélectionnez Créer un certificat de test.

  4. Dans la boîte de dialogue Créer un certificat de test, cliquez sur le bouton OK.

    Visual Studio régénère le certificat avec une nouvelle date d'expiration.

Suppression ou exportation d'un certificat

Vous pouvez supprimer ou exporter un certificat qui a expiré ou qui a été compromis, endommagé ou remplacé par un autre certificat. Pour plus d’informations sur la suppression ou l'exportation d'un certificat, consultez Comment utiliser la console de certificats.

Modification des applications installées

Si les fichiers d'un package installé sont modifiés, la vérification de signature peut empêcher l'application de se lancer. Pour modifier un package, effectuez les modifications dans les fichiers source d'origine en utilisant une licence de développeur, puis redéployez le package modifié. Pour plus d'informations sur les licences de développeur, consultez Obtenir une licence de développeur (applications du Windows Store).

Voir aussi

Concepts

Substitution d'un manifeste de package (applications du Windows Store)

Empaquetage de votre application du Windows Store à l'aide de Visual Studio 2012