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 des outils PowerShell. nous vous recommandons 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

  • Application empaquetée ou décompressée
    Application contenant un fichier AppxManifest.xml. Vous devrez 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 l’empaquetage manuel d’une application, consultez créer un package d’application avec l’outil MakeAppx.exe.

  • Applets de commande de l’infrastructure de clé publique (PKI)
    Vous avez besoin d’applets de commande PKI pour créer et exporter votre certificat de signature. Pour plus d’informations, consultez applets de commande d' infrastructure à clé publique.

Créer un certificat auto-signé

Un certificat auto-signé est utile pour tester votre application avant que vous ne soyez prêt à la publier dans le Windows Store. Suivez les étapes décrites dans cette section pour créer un certificat auto-signé.

Notes

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 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 dispose de 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, le « sujet » dans le certificat doit correspondre à la section « Publisher » dans le manifeste de votre application.

Par exemple, la section « Identity » 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 « Publisher » 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 possède plusieurs paramètres de personnalisation, mais pour les besoins de cet article, nous allons nous concentrer sur la création d’un certificat simple qui fonctionne avec SignTool. Pour obtenir plus d’exemples et les utilisations de cette applet de commande, consultez New-SelfSignedCertificate.

En fonction du fichier de 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 -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 concernant certains des paramètres :

  • KeyUsage: ce paramètre définit ce que le certificat peut être utilisé pour. Pour un certificat auto-signé, ce paramètre doit être défini sur DigitalSignature.

  • TextExtension: ce paramètre comprend des paramètres pour les extensions suivantes :

    • Utilisation améliorée de la clé : cette extension indique des objectifs supplémentaires pour lesquels la clé publique certifiée peut être utilisée. Pour un certificat auto-signé, 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). Pour un certificat auto-signé, ce paramètre doit inclure la chaîne d’extension « 2.5.29.19 = {text} », qui indique que le certificat est une entité finale (pas une autorité de certification).

Après l’exécution de cette commande, le certificat est ajouté au magasin de certificats local, tel que spécifié dans le paramètre « -CertStoreLocation ». Le résultat de la commande produira é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 permet d’afficher 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 les utilisateurs ou les groupes qui 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 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 le certificat de confiance 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 la confiance du système.