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.
Cet article explique comment créer et approuver un certificat pour la signature de package d’application à l’aide d’outils PowerShell (pour les outils CMD, voir ici). Il est recommandé d’utiliser Visual Studio pour empaqueter des applications UWP et empaqueter des applications de bureau, mais vous pouvez toujours empaqueter une application manuellement si vous n’avez pas utilisé Visual Studio pour développer votre application.
Conditions préalables
Une application empaquetée ou non empaquetée
Application contenant un fichier AppxManifest.xml. Vous devez référencer le fichier manifeste lors de la création du certificat qui sera utilisé pour signer le package d’application final. Pour plus d’informations sur la façon de empaqueter manuellement une application, consultez Créer un package d’application avec l’outil MakeAppx.exe.Applets de commande PKI (Public Key Infrastructure)
Vous avez besoin d’applets de commande PKI pour créer et exporter votre certificat de signature. Pour plus d’informations, consultez Cmdlets d’infrastructure à clé publique.
Créer un certificat auto-signé
Un certificat auto-signé est utile pour tester votre application avant de pouvoir la publier dans le Windows Store. Suivez les étapes décrites dans cette section pour créer un certificat auto-signé.
Remarque
Lorsque vous créez et utilisez un certificat auto-signé, seuls les utilisateurs qui installent et approuvent votre certificat peuvent exécuter votre application. Cela est facile à implémenter pour les tests, mais il peut empêcher d’autres utilisateurs d’installer votre application. Lorsque vous êtes prêt à publier votre application, nous vous recommandons d’utiliser un certificat émis par une source approuvée. Ce système d’approbation centralisée permet de s’assurer que l’écosystème d’applications a des niveaux de vérification pour protéger les utilisateurs contre les acteurs malveillants.
Déterminer l’objet de votre application empaquetée
Pour utiliser un certificat pour signer votre package d’application, l’objet du certificat doit correspondre à la section « Éditeur » du manifeste de votre application.
Par exemple, la section « Identité » du fichier AppxManifest.xml de votre application doit ressembler à ceci :
<Identity Name="Contoso.AssetTracker"
Version="1.0.0.0"
Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>
Dans ce cas, le « serveur de publication » est « CN=Contoso Software, O=Contoso Corporation, C=US », qui doit être utilisé pour créer votre certificat.
Utiliser New-SelfSignedCertificate pour créer un certificat
Utilisez l’applet de commande PowerShell New-SelfSignedCertificate pour créer un certificat auto-signé. New-SelfSignedCertificate a plusieurs paramètres pour la personnalisation, mais dans le cadre de cet article, nous allons nous concentrer sur la création d’un certificat simple qui fonctionnera avec SignTool. Pour plus d’exemples et d’utilisations de cette applet de commande, consultez New-SelfSignedCertificate.
En fonction du fichier AppxManifest.xml de l’exemple précédent, vous devez utiliser la syntaxe suivante pour créer un certificat. Dans une invite PowerShell avec élévation de privilèges :
New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -FriendlyName "Your friendly name goes here"
Notez les détails suivants sur certains des paramètres :
KeyUsage : ce paramètre définit ce que le certificat peut être utilisé. Pour un certificat auto-signature, ce paramètre doit être défini sur DigitalSignature.
TextExtension : ce paramètre inclut les paramètres des extensions suivantes :
Utilisation étendue des clés (EKU) : cette extension indique des objectifs supplémentaires pour lesquels la clé publique certifiée peut être utilisée. Pour un certificat d’auto-signature, ce paramètre doit inclure la chaîne d’extension « 2.5.29.37={text}1.3.6.1.5.5.7.3.3 », qui indique que le certificat doit être utilisé pour la signature de code.
Contraintes de base : cette extension indique si le certificat est une autorité de certification ou non. Pour un certificat d’auto-signature, ce paramètre doit inclure la chaîne d’extension « 2.5.29.19={text} », ce qui indique que le certificat est une entité de fin (et non une autorité de certification).
Après avoir exécuté cette commande, le certificat sera créé et ajouté au magasin de certificats personnel de l’utilisateur. Le résultat de la commande produit également l’empreinte numérique du certificat.
Vous pouvez afficher votre certificat dans une fenêtre PowerShell à l’aide des commandes suivantes :
Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint
Cela affiche tous les certificats dans le magasin de certificats personnels de l’utilisateur.
Pour installer une application signée avec ce certificat, ce dernier doit être importé dans le magasin de certificats des personnes de confiance de l’ordinateur local.
Exporter le certificat vers un fichier PFX
Pour importer le certificat nouvellement créé dans le magasin de certificats Personnes dignes de confiance de l’ordinateur local, vous devez d’abord l’exporter vers un fichier d’échange de données personnelles (PFX) à l’aide de l’applet de commande Export-PfxCertificate.
Lorsque vous utilisez Export-PfxCertificate, vous devez créer et utiliser un mot de passe ou utiliser le paramètre « -ProtectTo » pour spécifier quels utilisateurs ou groupes peuvent accéder au fichier sans mot de passe. Notez qu’une erreur s’affiche si vous n’utilisez pas le paramètre « -Password » ou « -ProtectTo ». « -Password » est recommandé pour une utilisation générale, tandis que « -ProtectTo » est utile lorsque votre compte d’utilisateur est soutenu par un contrôleur de domaine.
Utilisation du mot de passe
$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password
Utilisation de ProtectTo
Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>
Importer le certificat dans le magasin des personnes de confiance de l’ordinateur local
Maintenant que vous avez exporté le certificat vers un fichier PFX, vous pouvez l’importer dans le magasin des Personnes de confiance de l’ordinateur local à l’aide de l’applet de commande Import-PfxCertificate à partir d’une session PowerShell avec des droits d'administrateur.
Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" -Password $password -FilePath <FilePath>.pfx
Maintenant que le certificat est approuvé, vous êtes prêt à signer votre package d’application avec SignTool. Pour connaître l’étape suivante du processus d’empaquetage manuel, consultez Signer un package d’application à l’aide de SignTool.
Considérations relatives à la sécurité
En ajoutant un certificat aux magasins de certificats de l’ordinateur local, vous affectez la confiance des certificats de tous les utilisateurs de l'ordinateur. Il est recommandé de supprimer ces certificats lorsqu’ils ne sont plus nécessaires pour les empêcher d’être utilisés pour compromettre l’approbation du système.