Signer un package MSIX avec une signature Device Guard

Important

Microsoft Store pour Entreprises et Microsoft Store pour Éducation seront mis hors service au premier trimestre 2023. Vous pouvez continuer à utiliser les fonctionnalités actuelles des applications gratuites jusqu’à cette date. Pour plus d’informations sur cette modification, consultez Évolution de Microsoft Store pour Entreprises et Éducation

Important

Le service signature Device Guard v2 (DGSS v2) est désormais disponible.

Mai 2021 - Le mécanisme web existant pour le service de signature Device Guard v1 sera mis hors service le 9 juin 2021. Veuillez passer à la version du service basée sur PowerShell (DGSS v2). Un package NuGet contenant les composants DGSS v2 requis et la documentation de migration est disponible. Lisez les conditions d'utilisation de Microsoft incluses dans le package NuGet ; notez que l’utilisation de DGSS implique l’acceptation de ces conditions. Pour toute question, contactez-nous à DGSSMigration@microsoft.com.

Remarque

Après avoir téléchargé microsoft.acs/dgss.client.nupkg, vous pouvez le renommer en .zip et en extraire le contenu pour obtenir des fichiers, de la documentation et des informations supplémentaires

La signature Device Guard est une fonctionnalité Device Guard disponible dans Microsoft Store pour Entreprises et Éducation. Elle permet aux entreprises de garantir que chaque application provient d’une source approuvée. Vous pouvez utiliser SignTool dans le Kit de développement logiciel (SDK) Windows et le dlib DGSSv2 dans le package NuGet pour signer vos applications MSIX avec la signature Device Guard. Cette prise en charge des fonctionnalités vous permet d'intégrer facilement la signature Device Guard dans le workflow de création et de signature du package MSIX.

La signature Device Guard nécessite des autorisations dans le Microsoft Store pour Entreprises et utilise l’authentification Azure Active Directory (AD). Pour signer un package MSIX avec une signature Device Guard, suivez ces étapes.

  1. Si vous ne l'avez pas encore fait, se connecter au Microsoft Store pour Entreprises ou au Microsoft Store pour Éducation.

    Remarque

    Vous devez uniquement utiliser ce portail pour configurer les autorisations pour la signature Device Guard.

  2. Dans le Microsoft Store pour Entreprises (ou Microsoft Store pour Éducation), attribuez-vous un rôle avec les autorisations nécessaires pour effectuer la signature Device Guard.
  3. Inscrivez votre application dans le Portail Azure avec les paramètres appropriés pour pouvoir utiliser Azure AD Authentication avec le Microsoft Store pour Entreprises.
  4. Obtenez un jeton d’accès Azure AD au format JSON.
  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.

Les sections suivantes décrivent ces étapes plus en détail.

Configurer des autorisations pour la signature Device Guard

Pour utiliser la signature Device Guard au Microsoft Store pour Entreprises ou Microsoft Store pour Éducation, vous avez besoin du rôle de signataire Device Guard. Il s’agit du rôle de privilège minimum qui a la possibilité de signer. D’autres rôles tels que Administrateur général et propriétaire du compte de facturation peuvent également signer.

Remarque

Le rôle Signataire Device Guard est utilisé lorsque vous vous connectez en tant qu’application. L’administrateur général et propriétaire du compte de facturation sont utilisés lorsque vous vous connectez en tant que personne connectée.

Pour confirmer ou réattribuer des rôles :

  1. Connectez-vous au Microsoft Store pour Entreprises.
  2. Sélectionnez Gérer, puis Autorisations.
  3. Afficher les Rôles.

Pour plus d’informations, consultez Rôles et autorisations dans Microsoft Store pour Entreprises et Éducation.

Inscrivez votre application dans le portail Azure

Pour inscrire votre application avec les paramètres appropriés afin de pouvoir utiliser Azure AD Authentication avec le Microsoft Store pour Entreprises :

  1. Accédez à https://portal.azure.com, puis authentifiez-vous en tant qu’administrateur général du locataire

  2. Naviguez jusqu'au service Azure Azure Active Directory.

  3. Dans le menu de gauche, sous Gérer, localisez et sélectionnez Inscriptions d'applications

  4. Dans la barre des menus, sélectionnez Nouvelle inscription

  5. Dans le champ Nom, entrez DGSSv2.

    Remarque

    Le champ Nom est utilisé pour faciliter l'identification de l'inscription de l'application dans le portail Azure. Tout nom souhaité peut être utilisé. Dans le cadre de cette démonstration, nous utilisons simplement DGSSv2 pour faciliter l’identification.

  6. Sous Types de comptes pris en charge, sélectionnez le paramètre approprié.

    • Comptes dans cet annuaire d’organisation uniquement (client unique) : cette option est recommandée, sauf si vous avez besoin d’un déploiement multi-locataire. Tous les comptes d’utilisateur et d’invité dans votre annuaire peuvent utiliser votre application ou API.
    • Comptes dans n’importe quel annuaire organisationnel (n’importe quel annuaire Azure AD - Multi-locataire) : cette option est la meilleure pour une organisation qui a plusieurs locataires Azure AD, mais a uniquement besoin d’un point de confiance unique pour le code de signature. Tous les utilisateurs avec un compte professionnel ou scolaire Microsoft peuvent utiliser votre application ou API. Ceci inclut les établissements scolaires et les entreprises qui utilisent Office 365.
    • Comptes dans n’importe quel annuaire organisationnel (n’importe quel annuaire Azure AD - Multi-locataire) et comptes Microsoft personnels (par exemple, Skype, Xbox) : cette option n’est pas recommandée en raison de son ouverture d’utilisation par les comptes Microsoft au niveau du consommateur. Tous les utilisateurs avec un compte professionnel ou scolaire, ou un compte personnel Microsoft, peuvent utiliser votre application ou API. Ceci inclut les établissements scolaires et les entreprises qui utilisent Office 365, ainsi que des comptes personnels utilisés pour se connecter à des services tels que Xbox et Skype.
    • Comptes Microsoft personnels uniquement : comme la dernière option, cette option n’est pas recommandée. Cela n’est pas seulement parce qu’il autorise les compte personnel, mais parce que cette option prend uniquement en charge les compte personnel s. Les comptes Azure AD sont explicitement bloqués. Comptes personnels utilisés pour se connecter à des services tels que Xbox et Skype
  7. Dans le menu déroulant URI de redirection, sélectionnez Public client/native (mobile et bureau) dans le menu déroulant de sélection. Entrez https://dgss.microsoft.com dans la zone de texte.

  8. Cliquez sur S’inscrire

  9. En haut à droite de la page, recherchez les URI de redirection étiquetés entrée. Sélectionnez la ligne située sous l’étiquette 0 web, 0 spa, 1 client public

  10. Recherchez l’entrée intitulée Autoriser les flux de clients publics dans la section Paramètres avancés. Définissez cette valeur sur Oui

  11. Cliquez sur Enregistrer dans la partie supérieure de la page

  12. Dans le menu de gauche, sélectionnez Autorisations API

  13. Dans la barre des menus, sélectionnez Ajouter une autorisation. Dans le menu volant, sélectionnez l’onglet API utilisées par mon organisation. Dans la zone de recherche, entrez Windows Store pour Entreprises

Remarque

Si le Windows Store pour Entreprises n’apparaît pas dans la liste, ouvrez un nouvel onglet de navigateur, puis accédez à https://businessstore.microsoft.com, puis connectez-vous en tant qu'administrateur général du locataire. Fermez l’onglet du navigateur, puis recherchez à nouveau.

  1. Sélectionnez Windows Store pour Entreprises, puis sélectionnez Autorisations déléguées. Vérifiez user_impersonation.
  2. En bas de la page, cliquez sur Ajouter des autorisations. Dans le menu de gauche, sélectionnez Vue d'ensemble pour revenir à la vue d'ensemble de l’inscription de l’application DGSSv2.

Obtenir un jeton d’accès Azure AD

Ensuite, obtenez un jeton d’accès Azure AD pour votre application Azure AD au format JSON. Vous pouvez le faire à l’aide d’un large éventail de langages de programmation et de script. Pour plus d’informations sur ce processus, consultez Autoriser l’accès aux applications web Azure Active Directory à l’aide du flux d’octroi de code OAuth 2.0. Nous vous recommandons de récupérer un jeton d'actualisation avec le jeton d’accès, car votre jeton d’accès expirera en une heure.

Remarque

Si le Windows Store pour Entreprises n’apparaît pas dans la liste, ouvrez un nouvel onglet de navigateur, puis accédez à https://businessstore.microsoft.com, puis connectez-vous en tant qu'administrateur général du locataire. Fermez l’onglet du navigateur, puis recherchez à nouveau.

L’exemple PowerShell suivant montre comment demander un jeton d’accès.

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
}

Remarque

Nous vous recommandons d’enregistrer votre fichier JSON pour une utilisation ultérieure.

Obtenir la DLL signature Device Guard version 2

Pour vous connecter avec signature Device Guard version 2, obtenez Microsoft.Acs.Dlib.dll en téléchargeant le package NuGet qui sera utilisé pour signer votre package. Cela est également nécessaire pour obtenir le certificat racine.

Signez votre package

Une fois que vous avez votre jeton d’accès Azure AD, vous êtes prêt à utiliser SignTool pour signer votre package avec la signature Device Guard. Pour plus d’informations sur l’utilisation de SignTool pour signer des packages, consultez Signer un package d’application à l’aide de SignTool.

L’exemple de ligne de commande suivant montre comment signer un package avec la signature Device Guard version 2.

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

Remarque

  • Les certificats générés pour la signature Device Guard v2 sont valides pendant un jour. Nous vous recommandons d’utiliser l’une des options d’horodatage lorsque vous signez votre package. Si vous n’appliquez pas d’horodatage, la signature expirera dans un jour et l’application devra être résignée.
  • Assurez-vous que le nom de l’éditeur dans le manifeste de votre package correspond au certificat que vous utilisez pour signer le package. Avec cette fonctionnalité, il s’agit de votre certificat feuille. Par exemple, si le certificat feuille est CompanyName, le nom de l’éditeur dans le manifeste doit être CN=CompanyName. Sinon, l’opération de signature échoue.
  • Seul l’algorithme SHA256 est pris en charge.
  • Lorsque vous signez votre package avec la signature Device Guard, votre package n’est pas envoyé via Internet.

Test

Pour tester, téléchargez le certificat racine en cliquant ici ou en téléchargeant le package NuGet et en l’obtenant avec la commande :

Get-RootCertificate

Installez le certificat racine dans Autorités de certification racines de confiance de votre appareil. Installez votre application nouvellement signée pour vérifier que vous avez correctement signé votre application avec la signature Device Guard.

Important

Pour obtenir une isolation, déployez la stratégie CI WDAC pour approuver les applications signées avec DGSSv2. Veillez à lire la documentation readme_cmdlets et la migration de DGSSv1 vers la documentation DGSSv2 incluse dans le package NuGet.

Erreurs courantes

Voici les erreurs courantes que vous pouvez rencontrer.

  • 0x800700d : cette erreur courante signifie que le format du fichier JSON Azure AD n’est pas valide.
  • Vous devrez peut-être accepter les conditions générales de Microsoft Store pour Entreprises avant de télécharger le certificat racine de signature Device Guard. Pour ce faire, vous pouvez acquérir une application gratuite dans le portail.