Signieren eines MSIX-Pakets mit Device Guard-Signatur

Wichtig

Microsoft Store für Unternehmen und Microsoft Store für Bildungseinrichtungen werden im ersten Quartal 2023 eingestellt. Sie können die aktuellen Funktionen kostenloser Apps bis zu diesem Zeitpunkt weiterhin verwenden. Weitere Informationen zu dieser Änderung finden Sie unter "Entwicklung der Microsoft Store für Unternehmen und Education".

Wichtig

Device Guard Signing Service v2 (DGSS v2) ist jetzt verfügbar.

Mai 2021 – Der vorhandene webbasierte Mechanismus für den Device Guard-Signaturdienst v1 wird am 9. Juni 2021 eingestellt. Wechseln Sie zur powerShell-basierten Version des Diensts (DGSS v2). Ein NuGet Paket mit den erforderlichen DGSS v2-Komponenten und Migrationsdokumentationen ist verfügbar. Bitte lesen Sie die im NuGet-Paket enthaltenen Microsoft-Nutzungsbedingungen; beachten Sie, dass die Nutzung von DGSS die Annahme dieser Bedingungen impliziert. Für Fragen wenden Sie sich bitte an uns.DGSSMigration@microsoft.com

Hinweis

Nach dem Herunterladen von microsoft.acs/dgss.client.nupkg können Sie in .zip umbenennen und Inhalte für Dateien und zusätzliche Dokumentationen und Informationen extrahieren.

Die Device Guard-Signatur ist ein Device Guard-Feature, das im Microsoft Store für Unternehmen und Education verfügbar ist. Es ermöglicht Unternehmen, sicherzustellen, dass jede App aus einer vertrauenswürdigen Quelle stammt. Sie können SignTool im Windows SDK und der DGSSv2 dlib im NuGet-Paket verwenden, um Ihre MSIX-Apps mit der Device Guard-Signatur zu signieren. Mit dieser Featureunterstützung können Sie die Device Guard-Anmeldung ganz einfach in das MSIX-Paketerstellungs- und Signaturworkflow integrieren.

Die Device Guard-Signatur erfordert Berechtigungen im Microsoft Store für Unternehmen und verwendet Azure Active Directory (AD)-Authentifizierung. Führen Sie die folgenden Schritte aus, um ein MSIX-Paket mit der Device Guard-Signatur zu signieren.

  1. Wenn Sie dies noch nicht getan haben, registrieren Sie sich für Microsoft Store für Unternehmen oder Microsoft Store für Bildungseinrichtungen.

    Hinweis

    Sie müssen dieses Portal nur verwenden, um Berechtigungen für die Device Guard-Signatur zu konfigurieren.

  2. Weisen Sie sich in der Microsoft Store für Unternehmen (oder Microsoft Store für Bildungseinrichtungen) eine Rolle mit Berechtigungen zu, die zum Durchführen der Device Guard-Signatur erforderlich sind.
  3. Registrieren Sie Ihre App im Azure-Portal mit den richtigen Einstellungen, damit Sie die Azure AD-Authentifizierung mit dem Microsoft Store für Unternehmen verwenden können.
  4. Rufen Sie ein Azure AD-Zugriffstoken im JSON-Format ab.
  5. Führen Sie SignTool aus, um Ihr MSIX-Paket mit der Device Guard-Signatur zu signieren, und übergeben Sie das Azure AD-Zugriffstoken, das Sie im vorherigen Schritt abgerufen haben.

In den folgenden Abschnitten werden diese Schritte ausführlicher beschrieben.

Konfigurieren von Berechtigungen für die Device Guard-Signatur

Zum Verwenden der Device Guard-Anmeldung im Microsoft Store für Unternehmen oder Microsoft Store für Bildungseinrichtungen benötigen Sie die Device Guard-Signierrolle. Dies ist die geringste Berechtigungsrolle, die die Möglichkeit zum Signieren hat. Andere Rollen wie globaler Administrator - und Abrechnungskontobesitzer können sich auch signieren.

Hinweis

Device Guard Signer-Rolle wird verwendet, wenn Sie sich als App signieren. Globaler Administrator- und Abrechnungskontobesitzer wird verwendet, wenn Sie sich als angemeldete Person anmelden.

So bestätigen oder zuweisen Sie Rollen neu:

  1. Melden Sie sich beim Microsoft Store for Business an.
  2. Wählen Sie "Verwalten" und dann "Berechtigungen" aus.
  3. Rollen anzeigen.

Weitere Informationen finden Sie unter Rollen und Berechtigungen im Microsoft Store für Unternehmen und Education.

Registrieren Ihrer App im Azure-Portal

So registrieren Sie Ihre App mit den richtigen Einstellungen, damit Sie die Azure AD-Authentifizierung mit dem Microsoft Store für Unternehmen verwenden können:

  1. Navigieren Sie zu https://portal.azure.com, und authentifizieren Sie sich als globaler Mandantadministrator

  2. Navigieren Sie zum Azure Active Directory Azure-Dienst.

  3. Wählen Sie im linken Menü unter "Suchen verwalten"App-Registrierungen

  4. Wählen Sie in der Menüleiste "Neue Registrierung" aus.

  5. Geben Sie im Feld "Name " DGSSv2 ein.

    Hinweis

    Das Feld "Name" wird zur einfachen Identifizierung der App-Registrierung im Azure-Portal verwendet. Jeder gewünschte Name kann verwendet werden. Zum Zweck dieser Demonstration verwenden wir DGSSv2 einfach, um es einfach zu identifizieren.

  6. Wählen Sie unter unterstützten Kontotypen die entsprechende Einstellung aus.

    • Konten in diesem Organisationsverzeichnis nur (einzelner Mandant) – Diese Option wird empfohlen, es sei denn, Sie benötigen eine spezifische Notwendigkeit für eine mehrstufige Bereitstellung. Alle Benutzer- und Gastkonten in Ihrem Verzeichnis können Ihre Anwendung oder API verwenden.
    • Konten in einem beliebigen Organisationsverzeichnis (Beliebiges Azure AD-Verzeichnis – Multitenant) – Diese Option eignet sich am besten für eine Organisation mit mehreren Azure AD-Mandanten, benötigt jedoch nur einen einzelnen Vertrauenspunkt für die Codesignatur. Alle Benutzer mit einem Geschäfts-, Schul- oder Unikonto von Microsoft können Ihre Anwendung oder API verwenden. Dazu gehören auch Bildungseinrichtungen und Unternehmen, die Office 365 verwenden.
    • Konten in einem beliebigen Organisationsverzeichnis (beliebiges Azure AD-Verzeichnis - Multitenant) und persönliche Microsoft-Konten (z. B. Skype, Xbox) – Diese Option wird nicht empfohlen, da sie für die Verwendung auf Verbraucherebene microsoft-Konten geöffnet ist. Alle Benutzer mit einem Geschäfts-, Schul- oder Unikonto bzw. einem persönlichen Microsoft-Konto können Ihre Anwendung oder API verwenden. Es umfasst Schulen und Unternehmen, die Office 365 sowie persönliche Konten verwenden, die zum Anmelden bei Diensten wie Xbox und Skype verwendet werden.
    • Nur persönliche Microsoft-Konten – Wie die letzte Option wird diese Option auch nicht empfohlen. Dies liegt nicht nur daran, dass persönliche Konten zulässig sind, sondern dass diese Option nur persönliche Konten unterstützt. Azure AD-Konten werden explizit blockiert. Persönliche Konten, die zum Anmelden bei Diensten wie Xbox und Skype verwendet werden
  7. Wählen Sie im Dropdownmenü "Umleitungs-URI " die Option "Öffentlicher Client/nativer Desktop" (mobiler & Desktop) aus. Geben Sie https://dgss.microsoft.com in das Textfeld ein.

  8. Klicken Sie auf Registrieren.

  9. Suchen Sie oben rechts auf der Seite nach den Eintrags-URIs mit der Bezeichnung "Umleitungs-URIs". Wählen Sie die Zeile darunter mit der Bezeichnung 0 Web, 0 Spa, 1 öffentlicher Client aus.

  10. Suchen Sie den Eintrag mit der Bezeichnung "Öffentliche Clientflüsse zulassen " im Abschnitt "Erweiterte Einstellungen". Legen Sie diesen Wert auf "Ja" fest.

  11. Klicken Sie oben auf der Seite auf "Speichern ".

  12. Wählen Sie im linken Menü API-Berechtigungen aus.

  13. Wählen Sie in der Menüleiste "Berechtigung hinzufügen" aus. Wählen Sie im Flyoutmenü die APIs aus, die meine Organisation verwendet, registerkarte. Geben Sie im Suchfeld Windows Store für Unternehmen ein

Hinweis

Wenn Windows Store für Unternehmen in der Liste nicht angezeigt wird, öffnen Sie eine neue Browserregisterkarte, und navigieren Sie, um https://businessstore.microsoft.com sich als globaler Mandantenadministrator anzumelden. Schließen Sie die Browserregisterkarte, und suchen Sie dann erneut.

  1. Wählen Sie Windows Store für Unternehmen aus, und wählen Sie dann delegierte Berechtigungen aus. Überprüfen Sie user_impersonation.
  2. Klicken Sie unten auf der Seite auf "Berechtigungen hinzufügen ". Wählen Sie im linken Menü "Übersicht" aus, um zur DGSSv2-App-Registrierung zurückzukehren.

Abrufen eines Azure AD-Zugriffstokens

Rufen Sie als Nächstes ein Azure AD-Zugriffstoken für Ihre Azure AD-App im JSON-Format ab. Dazu können Sie eine Vielzahl von Programmier- und Skriptsprachen verwenden. Weitere Informationen zu diesem Prozess finden Sie unter Autorisieren des Zugriffs auf Azure Active Directory Webanwendungen mithilfe des OAuth 2.0-Codeerteilungsflusses. Es wird empfohlen, ein Aktualisierungstoken zusammen mit dem Zugriffstoken abzurufen, da Ihr Zugriffstoken in einer Stunde abläuft.

Hinweis

Wenn Windows Store für Unternehmen in der Liste nicht angezeigt wird, öffnen Sie eine neue Browserregisterkarte, und navigieren Sie, um https://businessstore.microsoft.com sich als globaler Mandantenadministrator anzumelden. Schließen Sie die Browserregisterkarte, und suchen Sie dann erneut.

Im folgenden PowerShell-Beispiel wird veranschaulicht, wie ein Zugriffstoken angefordert wird.

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
}

Hinweis

Es wird empfohlen, Ihre JSON-Datei für die spätere Verwendung zu speichern.

Abrufen der Device Guard-Signaturversion 2-DLL

Rufen Sie zum Signieren mit Device Guard Signature Version 2 die Microsoft.Acs.Dlib.dll ab, indem Sie das NuGet-Paket herunterladen, das zum Signieren Des Pakets verwendet wird. Dies ist auch erforderlich, um das Stammzertifikat abzurufen.

Signieren Ihres Pakets

Nachdem Sie über Ihr Azure AD-Zugriffstoken verfügen, können Sie SignTool verwenden, um Ihr Paket mit der Device Guard-Signatur zu signieren. Weitere Informationen zur Verwendung von SignTool zum Signieren von Paketen finden Sie unter Signieren eines App-Pakets mit SignTool.

Im folgenden Befehlszeilenbeispiel wird veranschaulicht, wie Sie ein Paket mit Device Guard-Signaturversion 2 signieren.

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

Hinweis

  • Zertifikate, die für die Device Guard-Signatur v2 generiert wurden, sind für einen Tag gültig. Es wird empfohlen, eine der Zeitstempeloptionen zu verwenden, wenn Sie Ihr Paket signieren. Wenn Sie keinen Zeitstempel anwenden, läuft die Signatur an einem Tag ab, und die App muss neu signiert werden.
  • Stellen Sie sicher, dass der Herausgebername im Manifest Ihres Pakets dem Zertifikat entspricht, das Sie zum Signieren des Pakets verwenden. Mit diesem Feature wird es Ihr Blattzertifikat sein. Wenn das Blattzertifikat z. B. " CompanyName" ist, muss der Herausgebername im Manifest CN=CompanyName sein. Andernfalls schlägt der Signaturvorgang fehl.
  • Nur der SHA256-Algorithmus wird unterstützt.
  • Wenn Sie Ihr Paket mit der Device Guard-Signatur signieren, wird Ihr Paket nicht über das Internet gesendet.

Test

Zum Testen laden Sie das Stammzertifikat herunter, indem Sie hier klicken oder dasNuGet Paket herunterladen und ihn mit dem Befehl abrufen:

Get-RootCertificate

Installieren Sie das Stammzertifikat auf den vertrauenswürdigen Stammzertifizierungsstellen auf Ihrem Gerät. Installieren Sie Ihre neu signierte App, um sicherzustellen, dass Sie Ihre App erfolgreich mit der Device Guard-Signatur signiert haben.

Wichtig

Um die Isolation zu erreichen, stellen Sie die WDAC CI-Richtlinie bereit, um Apps zu vertrauen, die mit DGSSv2 signiert sind. Lesen Sie die readme_cmdlets Dokumentation und Migration von DGSSv1 zu DGSSv2-Dokumentation, die im NuGet-Paket enthalten ist.

Häufige Fehler

Hier sind häufig auftretende Fehler aufgetreten.

  • 0x800700d: Dieser häufige Fehler bedeutet, dass das Format der Azure AD JSON-Datei ungültig ist.
  • Möglicherweise müssen Sie die Bedingungen von Microsoft Store für Unternehmen akzeptieren, bevor Sie das Stammzertifikat der Device Guard-Signatur herunterladen. Dies kann erfolgen, indem Sie eine kostenlose App im Portal erwerben.