Signer un package MSIX avec une signature Device GuardSign an MSIX package with Device Guard signing

Important

Nous introduisons une nouvelle version du service de signature Device Guard (DGSS) pour une plus grande convivialité d’automatisation.We are introducing a new version of the Device Guard Signing Service (DGSS) to be more automation friendly. La nouvelle version du service (DGSS v2) sera disponible pour la consommation à partir du mi-septembre 2020. vous aurez jusqu’à la fin du 2020 décembre pour passer à DGSS v2.The new version of the service (DGSS v2) will be available for consumption starting mid-September 2020, and you will have until the end of December 2020 to transition to DGSS v2. À la fin du mois de décembre 2020, les mécanismes web existants de la version actuelle du service DGSS seront mis hors service et ne pourront plus être utilisés.At the end of December 2020, the existing web-based mechanisms for the current version of the DGSS service will be retired and will no longer be available for use. Pensez à migrer vers la nouvelle version du service entre septembre et décembre 2020.Please make plans to migrate to the new version of the service between September and December 2020.

Voici les principales modifications que nous apportons au service :Following are the major changes we are making to the service:

  • La méthode permettant de consommer le service passera à une méthode plus conviviale basée sur l’automatisation en fonction des applets de commande PowerShell.The method for consuming the service will change to a more automation-friendly method based on PowerShell cmdlets. Ces applets de commande seront disponibles en téléchargement NuGet.These cmdlets will be available as a NuGet download.
  • Pour obtenir l’isolation souhaitée, vous devez obtenir une nouvelle stratégie CI auprès de DGSS v2 (et éventuellement la signer).In order to achieve desired isolation, you will be required to get a new CI policy from DGSS v2 (and optionally sign it).
  • DGSS v2 ne prend pas en charge le téléchargement des certificats feuille utilisés pour signer vos fichiers (Toutefois, le certificat racine sera toujours disponible en téléchargement).DGSS v2 will not have support for downloading leaf certificates used to sign your files (however, the root certificate will still be available to download). Notez que le certificat utilisé pour signer un fichier peut être extrait facilement du fichier signé lui-même.Note that the certificate used to sign a file can be easily extracted from the signed file itself. Par conséquent, après la mise hors service de DGSS v1 à la fin du mois de décembre 2020, vous ne pourrez plus télécharger les certificats feuille utilisés pour signer vos fichiers.As a result, after DGSS v1 is retired at the end of December 2020, you will no longer be able to download the leaf certificates used to sign your files.

Les fonctionnalités suivantes seront disponibles via les applets de commande PowerShell suivantes :The following functionality will be available via these PowerShell cmdlets:

  • Obtenir une stratégie CIGet a CI policy
  • Signer une stratégie CISign a CI policy
  • Signer un catalogueSign a catalog
  • Télécharger le certificat racineDownload root cert
  • Télécharger l’historique de vos opérations de signatureDownload history of your signing operations

Nous allons partager des instructions détaillées et l’emplacement NuGet avant le mi-octobre 2020.We will share detailed instructions and NuGet location before mid-October 2020. Pour toute question, veuillez nous contacter à l’adresse DGSSMigration@microsoft.com pour plus d’informations sur la migration.For any questions, please contact us at DGSSMigration@microsoft.com for more information on migration.

La signature de Device Guard est une fonctionnalité de protection des appareils qui est disponible dans le Microsoft Store pour l’entreprise et l’éducation.Device Guard signing is a Device Guard feature that is available in the Microsoft Store for Business and Education. Elle permet aux entreprises de garantir que chaque application provient d’une source approuvée.It enables enterprises to guarantee that every app comes from a trusted source. À compter de Windows 10 Insider preview version 18945, vous pouvez utiliser SignTool dans le SDK Windows pour signer vos applications MSIX avec la signature Device Guard.Starting in Windows 10 Insider Preview Build 18945, you can use SignTool in the Windows SDK to sign your MSIX apps with Device Guard signing. Cette prise en charge des fonctionnalités vous permet d’intégrer facilement Device Guard à la création du package MSIX et à la signature du flux de travail.This feature support enables you to easily incorporate Device Guard signing into the MSIX package building and signing workflow.

La signature de Device Guard nécessite des autorisations dans le Microsoft Store pour l’entreprise et utilise l’authentification Azure Active Directory (AD).Device Guard signing requires permissions in the Microsoft Store for Business and uses Azure Active Directory (AD) authentication. Pour signer un package MSIX avec la signature Device Guard, procédez comme suit.To sign an MSIX package with Device Guard signing, follow these steps.

  1. Si vous ne l’avez pas déjà fait, inscrivez-vous à Microsoft Store for Business ou Microsoft Store for Education.If you haven't done so already, sign up for Microsoft Store for Business or Microsoft Store for Education.

    Notes

    Vous devez uniquement utiliser ce portail pour configurer des autorisations pour la signature Device Guard.You only need to use this portal to configure permissions for Device Guard signing.

  2. Dans le Microsoft Store pour les entreprises (ou Microsoft Store pour l’éducation), attribuez un rôle disposant des autorisations nécessaires pour effectuer la signature de Device Guard.In the Microsoft Store for Business (or or Microsoft Store for Education), assign yourself a role with permissions necessary to perform Device Guard signing.
  3. Inscrivez votre application dans le portail Azure avec les paramètres appropriés afin de pouvoir utiliser l’authentification Azure ad avec le Microsoft Store pour l’entreprise.Register your app in the Azure portal with the proper settings so that you can use Azure AD authentication with the Microsoft Store for Business.
  4. Obtient un jeton d’accès Azure AD au format JSON.Get an Azure AD access token in JSON format.
  5. Exécutez SignTool pour signer votre package MSIX avec la signature Device Guard et transmettez le jeton d’accès Azure AD que vous avez obtenu à l’étape précédente.Run SignTool to sign your MSIX package with Device Guard signing, and pass the Azure AD access token you obtained in the previous step.

Les sections suivantes décrivent ces étapes plus en détail.The following sections describes these steps in more detail.

Configurer des autorisations pour la signature Device GuardConfigure permissions for Device Guard signing

Pour utiliser Device Guard en vous connectant au Microsoft Store pour les entreprises ou les Microsoft Store pour l’éducation, vous devez disposer du rôle de signataire Device Guard .To use Device Guard signing in the Microsoft Store for Business or Microsoft Store for Education, you need the Device Guard signer role. Il s’agit du rôle le moins privilégié qui a la possibilité de signer.This is the least privilege role that has the ability to sign. D’autres rôles, tels que l' administrateur général et le propriétaire du compte de facturation , peuvent également se connecter.Other roles such as Global Administrator and Billing account owner can also sign.

Notes

Le rôle de signataire Device Guard est utilisé lorsque vous vous connectez en tant qu’application.Device Guard Signer role is used when you are signing as an app. Le propriétaire du compte de facturation et de l’administrateur général est utilisé lorsque vous vous connectez en tant que personne connectée.Global Administrator and Billing Account Owner is used when you sign as a logged in person.

Pour confirmer ou réassigner des rôles :To confirm or reassign roles:

  1. Connectez-vous au Microsoft Store pour entreprises.Sign in to the Microsoft Store for Business.
  2. Sélectionnez gérer , puis autorisations.Select Manage and then select Permissions.
  3. Afficher les rôles.View Roles.

Pour plus d’informations, consultez rôles et autorisations dans le Microsoft Store pour l’entreprise et l’éducation.For more information, see Roles and permissions in the Microsoft Store for Business and Education.

Inscrire votre application dans le portail AzureRegister your app in the Azure Portal

Pour inscrire votre application avec les paramètres appropriés afin de pouvoir utiliser l’authentification Azure AD avec le Microsoft Store pour l’entreprise :To register your app with the proper settings so that you can use Azure AD authentication with the Microsoft Store for Business:

  1. Connectez-vous au portail Azure et suivez les instructions du Guide de démarrage rapide : inscrire une application auprès de la plateforme Microsoft Identity pour inscrire l’application qui utilisera la signature Device Guard.Sign in to the Azure portal and follow the instructions in Quickstart: Register an application with the Microsoft identity platform to register the app that will use Device Guard signing.

    Notes

    Dans la section URI de redirection , nous vous recommandons de choisir client Public (mobile & Desktop).Under Redirect URI section, we recommend you choose Public client (mobile & desktop). Sinon, si vous choisissez Web pour le type d’application, vous devrez fournir une clé secrète client lorsque vous obtenez un jeton d’accès Azure ad plus tard dans ce processus.Otherwise, if you choose Web for the app type, you will need to provide a client secret when you obtain an Azure AD access token later in this process.

  2. Une fois votre application inscrite, dans la page principale de votre application dans la Portail Azure, cliquez sur autorisations d’API, sous API utilisées par mon organisation et ajoutez une autorisation pour l' API du Windows Store pour entreprises.After you register your app, on the main page for your app in the Azure portal, click API permissions, under APIs my organization uses and add a permission for the Windows Store for Business API.

  3. Ensuite, sélectionnez autorisations déléguées , puis sélectionnez user_impersonation.Next, select Delegated permissions and then select user_impersonation.

Obtenir un jeton d’accès Azure ADGet an Azure AD access token

Obtenez ensuite un jeton d’accès Azure AD pour votre application Azure AD au format JSON.Next, obtain an Azure AD access token for your Azure AD app in JSON format. Vous pouvez le faire à l’aide de divers langages de programmation et de script.You can do this using a variety of programming and scripting languages. Pour plus d’informations sur ce processus, consultez autoriser l’accès aux applications web Azure Active Directory à l’aide du workflow d’octroi de code OAuth 2,0.For more information about this process, see Authorize access to Azure Active Directory web applications using the OAuth 2.0 code grant flow. Nous vous recommandons de récupérer un jeton d’actualisation avec le jeton d’accès, car votre jeton d’accès expirera dans une heure.We recommend that you retrieve a refresh token along with the access token, because your access token will expire in one hour.

Notes

Si vous avez inscrit votre application en tant qu’application Web dans le portail Azure, vous devez fournir une clé secrète client lorsque vous demandez votre jeton.If you registered your app as a Web app in the Azure portal, you must provide a client secret when you request your token. Pour plus d'informations, consultez la section précédente.For more information, see the previous section.

L’exemple PowerShell suivant montre comment demander un jeton d’accès.The following PowerShell example demonstrates how to request an access token.

function GetToken()
{

    $c = Get-Credential -Credential $user
    
    $Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $c.UserName, $c.password
    $user = $Credentials.UserName
    $password = $Credentials.GetNetworkCredential().Password
    
    $tokenCache = "outfile.json"

    #replace <application-id> and <client_secret-id> with the Application ID from your Azure AD application registration
    $Body = @{
      'grant_type' = 'password'
      'client_id'= '<application-id>'
      'client_secret' = '<client_secret>'
      'resource' = 'https://onestore.microsoft.com'
      'username' = $user
      'password' = $password
    }

    $webpage = Invoke-WebRequest 'https://login.microsoftonline.com/common/oauth2/token' -Method 'POST'  -Body $Body -UseBasicParsing
    $webpage.Content | Out-File $tokenCache -Encoding ascii
}

Notes

Nous recommandons d’enregistrer votre fichier JSON en vue d’une utilisation ultérieure.We recommand that you save your JSON file for later use.

Signer votre packageSign your package

Une fois que vous disposez de votre jeton d’accès Azure AD, vous êtes prêt à utiliser SignTool pour signer votre package avec la signature Device Guard.After you have your Azure AD access token, you are ready to use SignTool to sign your package with Device Guard signing. Pour plus d’informations sur l’utilisation de SignTool pour signer des packages, consultez signer un package d’application à l’aide de SignTool.For more information about using SignTool to sign packages, see Sign an app package using SignTool.

L’exemple de ligne de commande suivant montre comment signer un package avec la signature Device Guard.The following command line example demonstrates how to sign a package with Device Guard signing.

signtool sign /fd sha256 /dlib DgssLib.dll /dmdf <Azure AAD in .json format> /t <timestamp-service-url> <your .msix package>

Notes

  • Nous vous recommandons d’utiliser l’une des options d’horodatage lorsque vous signez votre package.We recommend that you use one of the timestamp options when you sign your package. Si vous n’appliquez pas d' horodatage, la signature expire dans un an et l’application doit être resignée.If you do not apply a timestamp, the signing will expire in one year and the app will need to be resigned.
  • Assurez-vous que le nom de l’éditeur figurant dans le manifeste de votre package correspond au certificat que vous utilisez pour signer le package.Make sure that the publisher name in your package's manifest matches the certificate you are using to sign the package. Avec cette fonctionnalité, il s’agit de votre certificat feuille.With this feature, it will be your leaf certificate. Par exemple, si le certificat feuille est CompanyName, le nom du serveur de publication dans le manifeste doit être CN = CompanyName.For example, if leaf certificate is CompanyName, than the publisher name in the manifest must be CN=CompanyName. Dans le cas contraire, l’opération de signature échoue.Otherwise, the signing operation will fail.
  • Seul l’algorithme SHA256 est pris en charge.Only the SHA256 algorithm is supported.
  • Lorsque vous signez votre package avec la signature de Device Guard, votre package n’est pas envoyé sur Internet.When you sign your package with Device Guard signing, your package is not being sent over the Internet.

TestTest

Pour tester la signature de Device Guard, téléchargez votre certificat à partir du Microsoft Store pour le portail d’entreprise.To test the Device Guard signing, download your certificate from the Microsoft Store for Business Portal.

  1. Connectez-vous au Microsoft Store pour entreprises.Sign in to the Microsoft Store for Business.
  2. Sélectionnez gérer , puis sélectionnez paramètres.Select Manage and then select Settings.
  3. Afficher les appareils.View Devices.
  4. Afficher Télécharger le certificat racine de votre organisation pour une utilisation avec Device GuardView Download your organization's root certificate for use with Device Guard
  5. Cliquez sur TéléchargerClick Download

Installez le certificat racine auprès des autorités de certification racines de confiance sur votre appareil.Install the root certificate to the Trusted Root Certification Authorities on your device . Installez votre application nouvellement signée pour vérifier que vous avez correctement signé votre application avec la signature Device Guard.Install your newly signed app to verify that you have successfully signed your app with Device Guard signing.

Erreurs courantesCommon errors

Voici les erreurs courantes que vous pouvez rencontrer.Here are common errors you might encounter.

  • 0x800700d : cette erreur courante signifie que le format du fichier JSON Azure AD n’est pas valide.0x800700d: This common error means that the format of the Azure AD JSON file is invalid.
  • Vous devrez peut-être accepter les conditions générales de Microsoft Store pour l’entreprise avant de télécharger le certificat racine de signature Device Guard.You may need to accept the terms and conditions of Microsoft Store for Business before downloading the root certificate of Device Guard Signing. Pour ce faire, vous pouvez acquérir une application gratuite dans le portail.This can be done by acquiring a free app in the portal.