Créer un certificat de signature de packageCreate a certificate for package signing

Cet article explique comment créer et exporter un certificat pour la signature de package d’application à l’aide des outils PowerShell.This article explains how to create and export a certificate for app package signing using PowerShell tools. 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.It's recommended that you use Visual Studio for packaging UWP apps and packaging desktop apps, but you can still package an app manually if you did not use Visual Studio to develop your app.

PrérequisPrerequisites

  • Application empaquetée ou décompresséeA packaged or unpackaged app
    Application contenant un fichier AppxManifest.xml.An app containing an AppxManifest.xml file. 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.You will need to reference the manifest file while creating the certificate that will be used to sign the final app package. Pour plus d’informations sur l’empaquetage manuel d’une application, consultez créer un package d’application avec l’outil MakeAppx.exe.For details on how to manually package an app, see Create an app package with the MakeAppx.exe tool.

  • Applets de commande de l’infrastructure de clé publique (PKI)Public Key Infrastructure (PKI) Cmdlets
    Vous avez besoin d’applets de commande PKI pour créer et exporter votre certificat de signature.You need PKI cmdlets to create and export your signing certificate. Pour plus d’informations, consultez applets de commande d' infrastructure à clé publique.For more information, see Public Key Infrastructure Cmdlets.

Créer un certificat auto-signéCreate a self-signed certificate

Un certificat auto-signé est utile pour tester votre application avant que vous ne soyez prêt à la publier dans le Windows Store.A self-signed certificate is useful for testing your app before you're ready to publish it to the Store. Suivez les étapes décrites dans cette section pour créer un certificat auto-signé.Follow the steps outlined in this section to create a self-signed certificate.

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.When you create and use a self-signed certificate only users who install and trust your certificate can run your application. Cela est facile à implémenter pour les tests, mais peut empêcher d’autres utilisateurs d’installer votre application.This is easy to implement for testing but it may prevent additional users from installing your application. Lorsque vous êtes prêt à publier votre application, nous vous recommandons d’utiliser un certificat émis par une source approuvée.When you are ready to publish your application we recommend that you use a certificate issued by a trusted source. 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.This system of centralized trust helps to ensure that the application ecosystem has levels of verification to protect users from malicious actors.

Déterminer l’objet de votre application empaquetéeDetermine the subject of your packaged app

Pour utiliser un certificat pour signer votre package d’application, le « sujet » dans le certificat doit correspondre à la section « éditeur » du manifeste de votre application.To use a certificate to sign your app package, the "Subject" in the certificate must match the "Publisher" section in your app's manifest.

Par exemple, la section « Identity » du fichier AppxManifest.xml de votre application doit ressembler à ceci :For example, the "Identity" section in your app's AppxManifest.xml file should look something like this:

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

Le « serveur de publication », dans le cas présent, est « CN = contoso Software, O = Contoso Corporation, C = US », qui doit être utilisé pour créer votre certificat.The "Publisher", in this case, is "CN=Contoso Software, O=Contoso Corporation, C=US" which needs to be used for creating your certificate.

Utiliser New-SelfSignedCertificate pour créer un certificatUse New-SelfSignedCertificate to create a certificate

Utilisez l’applet de commande PowerShell New-SelfSignedCertificate pour créer un certificat auto-signé.Use the New-SelfSignedCertificate PowerShell cmdlet to create a self signed certificate. 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.New-SelfSignedCertificate has several parameters for customization, but for the purpose of this article, we'll focus on creating a simple certificate that will work with SignTool. Pour obtenir plus d’exemples et les utilisations de cette applet de commande, consultez New-SelfSignedCertificate.For more examples and uses of this cmdlet, see 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.Based on the AppxManifest.xml file from the previous example, you should use the following syntax to create a certificate. Dans une invite PowerShell avec élévation de privilèges :In an elevated PowerShell prompt:

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 :Note the following details about some of the parameters:

  • KeyUsage: ce paramètre définit ce que le certificat peut être utilisé pour.KeyUsage: This parameter defines what the certificate may be used for. Pour un certificat auto-signé, ce paramètre doit être défini sur DigitalSignature.For a self-signing certificate, this parameter should be set to DigitalSignature.

  • TextExtension: ce paramètre comprend des paramètres pour les extensions suivantes :TextExtension: This parameter includes settings for the following extensions:

    • 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.Extended Key Usage (EKU): This extension indicates additional purposes for which the certified public key may be used. 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.For a self-signing certificate, this parameter should include the extension string "2.5.29.37={text}1.3.6.1.5.5.7.3.3", which indicates that the certificate is to be used for code signing.

    • Contraintes de base : cette extension indique si le certificat est une autorité de certification (CA).Basic Constraints: This extension indicates whether or not the certificate is a Certificate Authority (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).For a self-signing certificate, this parameter should include the extension string "2.5.29.19={text}", which indicates that the certificate is an end entity (not a CA).

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 ».After running this command, the certificate will be added to the local certificate store, as specified in the "-CertStoreLocation" parameter. Le résultat de la commande produira également l’empreinte numérique du certificat.The result of the command will also produce the certificate's thumbprint.

Vous pouvez afficher votre certificat dans une fenêtre PowerShell à l’aide des commandes suivantes :You can view your certificate in a PowerShell window by using the following commands:

Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint

Cela permet d’afficher tous les certificats dans votre magasin local.This will display all of the certificates in your local store.

Exporter un certificatExport a certificate

Pour exporter le certificat dans le magasin local vers un fichier d’échange d’informations personnelles (PFX), utilisez l’applet de commande Export-PfxCertificate .To export the certificate in the local store to a Personal Information Exchange (PFX) file, use the Export-PfxCertificate cmdlet.

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.When using Export-PfxCertificate, you must either create and use a password or use the "-ProtectTo" parameter to specify which users or groups can access the file without a password. Notez qu’une erreur s’affiche si vous n’utilisez pas le paramètre « -Password » ou « -ProtectTo ».Note that an error will be displayed if you don't use either the "-Password" or "-ProtectTo" parameter.

Utilisation du mot de passePassword usage

$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText 
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password

Utilisation de ProtectToProtectTo usage

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.After you create and export your certificate, you're ready to sign your app package with SignTool. Pour l’étape suivante du processus d’empaquetage manuel, consultez signer un package d’application à l’aide de SignTool.For the next step in the manual packaging process, see Sign an app package using SignTool.

Considérations relatives à la sécuritéSecurity considerations

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.By adding a certificate to local machine certificate stores, you affect the certificate trust of all users on the computer. 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.It is recommended that you remove those certificates when they are no longer necessary to prevent them from being used to compromise system trust.