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’à ce moment-là. Pour plus d’informations sur ce changement, consultez Évolution de la Microsoft Store pour Entreprises et de l’éducation

Important

Device Guard Sign Service 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. Passez à la version powerShell du service (DGSS v2). Un package NuGet contenant les composants DGSS v2 requis et la documentation de migration sont disponibles. Veuillez lire les conditions d’utilisation de Microsoft incluses dans le package NuGet ; notez que l’utilisation de DGSS implique l’acceptation de ces termes. Pour toute question, veuillez nous contacter à l’adresse DGSSMigration@microsoft.com.

Notes

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

La signature Device Guard est une fonctionnalité Device Guard disponible dans les 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’incorporer facilement la connexion Device Guard dans la génération et le flux de travail 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 la signature Device Guard, procédez comme suit.

  1. Si vous ne l’avez pas déjà fait, inscrivez-vous à Microsoft Store pour Entreprises ou Microsoft Store pour Éducation.

    Notes

    Vous devez uniquement utiliser ce portail pour configurer des 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 afin que vous puissiez utiliser l’authentification Azure AD 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 transmettre 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 Device Guard, connectez-vous 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 le moins privilégié qui a la possibilité de signer. D’autres rôles tels que l’administrateur général et le propriétaire du compte de facturation peuvent également signer.

Notes

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

Pour confirmer ou réaffecter des rôles :

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

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

Inscrire votre application dans le portail Azure

Pour inscrire votre application avec les paramètres appropriés afin que vous puissiez utiliser l’authentification Azure AD avec l’Microsoft Store pour Entreprises :

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

  2. Accédez au service Azure Azure Active Directory.

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

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

  5. Dans le champ Nom , entrez DGSSv2.

    Notes

    Le champ Nom est utilisé pour identifier facilement 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 (locataire unique) : cette option est recommandée, sauf si vous avez besoin d’un déploiement multilocataire. 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 - Multitenant) : cette option est idéale pour une organisation qui a plusieurs locataires Azure AD, mais a uniquement besoin d’un point d’approbation unique pour la signature de code. Tous les utilisateurs disposant d’un compte professionnel ou scolaire de Microsoft peuvent utiliser votre application ou votre API. Ceci inclut les établissements scolaires et les entreprises qui utilisent Office 365.
    • Comptes dans n’importe quel annuaire organisationnel (répertoire Azure AD - Multitenant) et comptes Microsoft personnels (par exemple, Skype, Xbox) : cette option n’est pas recommandée en raison de son ouverture à l’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. Il inclut les écoles et les entreprises qui utilisent des Office 365 ainsi que des comptes personnels utilisés pour se connecter aux 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 comptes personnels, mais parce que cette option prend uniquement en charge les comptes personnels. Les comptes Azure AD sont explicitement bloqués. Comptes personnels utilisés pour se connecter aux services tels que Xbox et Skype
  7. Dans la liste déroulante URI de redirection , sélectionnez Client public/natif (bureau mobile & ) dans le menu déroulant de sélection. Entrez https://dgss.microsoft.com dans la zone de texte.

  8. Cliquez sur S’inscrire

  9. Vers le haut à droite de la page, recherchez les URI de redirection étiquetés d’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 en haut de la page

  12. Dans le menu de gauche, sélectionnez les autorisations d’API

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

Notes

Si Windows Store pour Entreprises ne s’affiche pas dans la liste, ouvrez un nouvel onglet de navigateur, puis accédez à https://businessstore.microsoft.com la connexion en tant qu’administrateur général du locataire. Fermez l’onglet navigateur, puis recherchez à nouveau.

  1. Sélectionnez Windows Store pour Entreprises, puis sélectionnez Autorisations déléguées. Vérifiez user_impersonation.
  2. Cliquez sur Ajouter des autorisations en bas de la page. Dans le menu de gauche, sélectionnez Vue d’ensemble pour revenir à la vue d’ensemble de l’inscription d’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’une variété de langages de programmation et de script. Pour plus d’informations sur ce processus, consultez Autoriser l’accès à Azure Active Directory applications web à 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.

Notes

Si Windows Store pour Entreprises ne s’affiche pas dans la liste, ouvrez un nouvel onglet de navigateur, puis accédez à https://businessstore.microsoft.com la connexion en tant qu’administrateur général du locataire. Fermez l’onglet 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
}

Notes

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

Obtenir la DLL Device Guard Sign version 2

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

Signer 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 device Guard signature version 2.

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

Notes

  • 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 auprès des autorités de certification racines approuvées sur 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 parvenir à 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.