Créer un certificat de signature de package

Cet article explique comment créer et exporter un certificat pour la signature de package d’application à l’aide d’outils PowerShell. 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.

Prérequis

  • Empaqueté ou non empaqueté
    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 d’empaqueter manuellement une application, consultez Créer un package d’application avec l’outil MakeAppx.exe.

  • Infrastructure à clé publique (PKI) Cmdlets
    Vous avez besoin d’applets de commande PKI pour créer et exporter votre certificat de signature. Pour plus d’informations, consultez cmdlet 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 afin de 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é » dans le 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 auto-signé

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 :

New-SelfSignedCertificate -Type Custom -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -KeyUsage DigitalSignature -FriendlyName "Your friendly name goes here" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")

Notez les détails suivants sur certains des paramètres :

  • KeyUsage : ce paramètre définit ce pour quoi 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 correspondant aux 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 (CA) 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 est ajouté au magasin de certificats local, comme spécifié dans le paramètre « -CertStoreLocation ». Le résultat de la commande produit également l’empreinte numérique du certificat.

Vous pouvez vérifier ces certificats dans la 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 votre magasin local.

Exporter un certificat

Pour exporter le certificat dans le magasin local vers un fichier PFX (Personal Information Exchange), utilisez 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 ».

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>

Après avoir créé et exporté votre certificat, 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 de sécurité

En ajoutant un certificat aux magasins de certificats d’ordinateur local, vous affectez l’approbation de certificat de tous les utilisateurs sur 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.