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 wieder in den 1. Quartal 2023 zurückgeändert. Sie können bis zu diesem Zeitpunkt weiterhin die aktuellen Funktionen kostenloser Apps verwenden. Weitere Informationen zu dieser Änderung finden Sie unter Weiterentwickeln der Microsoft Store für Unternehmen und Bildungseinrichtungen.

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 aus dem Dienst 2021 zurückgezogen. Gehen Sie zur PowerShell-basierten Version des Diensts (DGSS v2) über. Ein NuGet paket mit den erforderlichen DGSS v2-Komponenten und der Migrationsdokumentation ist verfügbar. Lesen Sie die Microsoft-Nutzungsbedingungen, die im NuGet enthalten sind. Beachten Sie, dass die Verwendung von DGSS die Zustimmung zu diesen Bedingungen impliziert. Wenden Sie sich bei Fragen unter an DGSSMigration@microsoft.com uns.

Hinweis

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

Device Guard-Signatur ist ein Device Guard-Feature, das in der Microsoft Store für Unternehmen Education verfügbar ist. So können Unternehmen garantieren, dass jede App aus einer vertrauenswürdigen Quelle stammt. Sie können SignTool im Windows SDK und dgssv2 dlib im NuGet-Paket verwenden, um Ihre MSIX-Apps mit Device Guard-Signatur. Mit dieser Featureunterstützung können Sie Device Guard-Signatur in den MSIX-Workflow zum Erstellen und Signieren von Paketen integrieren.

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

  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 zum Konfigurieren von Berechtigungen für Device Guard-Signatur.

  2. Weisen Sie Microsoft Store für Unternehmen (oder oder Microsoft Store für Bildungseinrichtungen) sich selbst eine Rolle mit Berechtigungen zu, die zum Ausführen der Device Guard-Signatur.
  3. Registrieren Sie Ihre App im Azure-Portal mit den richtigen Einstellungen, damit Sie Azure AD Authentifizierung mit dem Microsoft Store für Unternehmen.
  4. Abrufen eines Azure AD Zugriffstokens im JSON-Format.
  5. Führen Sie SignTool aus, um Ihr MSIX-Paket mit Device Guard-Signatur zu signieren, und übergeben Sie das Azure AD Zugriffstoken, das Sie im vorherigen Schritt erhalten haben.

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

Konfigurieren von Berechtigungen für Device Guard-Signatur

Um die Device Guard-Signatur im Microsoft Store für Unternehmen oder Microsoft Store für Bildungseinrichtungen verwenden zu können, benötigen Sie die Device Guard-Signatorrolle. Dies ist die Rolle mit den geringsten Rechten, die signieren kann. Andere Rollen wie globaler Administrator und Abrechnungskontobesitzer können ebenfalls signieren.

Hinweis

Die Rolle "Device Guard Signer" 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:

  1. Melden Sie sich beimMicrosoft Store für Unternehmen.
  2. Wählen Sie Verwalten und dann Berechtigungen aus.
  3. Anzeigen von Rollen.

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

Registrieren Ihrer App im Azure-Portal

So registrieren Sie Ihre App mit den richtigen Einstellungen, damit Sie Azure AD Authentifizierung mit dem Microsoft Store für Unternehmen:

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

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

  3. Suchen Sie im Menü auf der linken Seite unter Verwalten die Option App-Registrierungen

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

  5. Geben Sie im Feld Name den Namen DGSSv2 ein.

    Hinweis

    Das Feld Name dient zur einfachen Identifizierung der App-Registrierung im Azure-Portal. Es kann ein beliebiger Name verwendet werden. Für diese Demonstration verwenden wir DGSSv2, um die Identifizierung einfach zu machen.

  6. Wählen Sie unter Unterstützte Kontotypen die entsprechende Einstellung aus.

    • Nur Konten in diesem Organisationsverzeichnis (einzelner Mandant): Diese Option wird empfohlen, es sei denn, Sie benötigen eine bereitstellung mit mehreren Mandanten. Alle Benutzer- und Gastkonten in Ihrem Verzeichnis können Ihre Anwendung oder API verwenden.
    • Konten in einem beliebigen Organisationsverzeichnis (beliebiges Azure AD-Verzeichnis – mehrstantig): Diese Option ist am besten für eine Organisation mit mehreren Azure AD-Mandanten, benötigt aber nur einen einzigen Vertrauenspunkt für die Codesignatur. Alle Benutzer mit einem Arbeits- oder Schulkonto von Microsoft können Ihre Anwendung oder API verwenden. Dazu gehören auch Bildungseinrichtungen und Unternehmen, die Office 365 verwenden.
    • Konten in allen Organisationsverzeichnissen (beliebiges Azure AD-Verzeichnis – mehrstantig) und persönliche Microsoft-Konten (z.B. Skype, Xbox): Diese Option wird nicht empfohlen, da sie von Microsoft-Konten auf Consumerebene verwendet werden kann. Alle Benutzer mit einem Geschäfts-, Schul- oder Unikonto bzw. einem persönlichen Microsoft-Konto können Ihre Anwendung oder API verwenden. Sie umfasst Schulen und Unternehmen, die Office 365 verwenden, sowie persönliche Konten, die für die Anmeldung bei Diensten wie Xbox und Skype.
    • Nur persönliche Microsoft-Konten: Wie bei der letzten Option wird diese Option ebenfalls nicht empfohlen. Dies liegt nicht nur daran, dass es persönliche Konten zulässt, sondern weil diese Option nur persönliche Konten unterstützt. Azure AD Konten werden explizit blockiert. Persönliche Konten, die für die Anmeldung bei Diensten wie Xbox und Skype
  7. Wählen Sie in der Dropdownliste Umleitungs-URI im Dropdownmenü public client/native (mobile & desktop) (Öffentlicher Client/nativ (mobiler &-Desktop)) aus. Geben Sie https://dgss.microsoft.com in das Textfeld ein.

  8. Klicken Sie auf Registrieren.

  9. Suchen Sie rechts oben auf der Seite den Eintrag 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 im Abschnitt Erweiterte Einstellungen nach dem Eintrag Allow public client flows (Öffentliche Clientflüsse zulassen). Legen Sie diesen Wert auf Ja fest.

  11. Klicken Sie oben auf der Seite auf Speichern.

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

  13. Wählen Sie in der Menüleiste Berechtigung hinzufügen aus. Wählen Sie im Flyoutmenü die Registerkarte APIs aus, die meine Organisation verwendet. Geben Sie im Suchfeld die Kontrollkästchen Windows Store Business ein.

Hinweis

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

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

Abrufen eines Azure AD-Zugriffstokens

Als Nächstes erhalten Sie Azure AD Zugriffstoken für Ihre Azure AD-App im JSON-Format. Hierzu 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-Codeberechtigungsflusses. 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 nicht in der Liste angezeigt wird, öffnen Sie eine neue Browserregisterkarte, und navigieren Sie zu , und melden Sie sich dann als globaler Administrator https://businessstore.microsoft.com des Mandanten an. Schließen Sie die Browserregisterkarte, und suchen Sie erneut.

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

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

Wir empfehlen Ihnen, Ihre JSON-Datei zur späteren Verwendung zu speichern.

Abrufen der Device Guard Signing Version 2-DLL

Um sich mit Device Guard Signing Version 2 zu signieren, laden Sie dieMicrosoft.Acs.Dlib.dllherunter, indem Sie das NuGet-Paket herunterladen, das zum Signieren Ihres Pakets verwendet wird. Dies ist auch erforderlich, um das Stammzertifikat zu erhalten.

Signieren Ihres Pakets

Nachdem Sie ihr zugriffsbasiertes Azure AD haben, können Sie SignTool verwenden, um Ihr Paket mit einem Device Guard-Signatur. 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-Signatur 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

  • Es wird empfohlen, beim Signieren Ihres Pakets eine der Zeitstempeloptionen zu verwenden. Wenn Sie keinen Zeitstempel anwenden,läuft die Signatur in einem Jahr ab, und die App muss neu erstellt werden.
  • Stellen Sie sicher, dass der Herausgebername im Manifest Ihres Pakets dem Zertifikat entspricht, das Sie zum Signieren des Pakets verwenden. Mit diesem Feature ist es Ihr Blattzertifikat. Wenn das Blattzertifikat beispielsweise CompanyName ist, muss der Herausgebername im Manifest CN=CompanyName sein. Andernfalls kann der Signaturvorgang nicht durchgeführt werden.
  • Nur der SHA256-Algorithmus wird unterstützt.
  • Wenn Sie Ihr Paket mit Device Guard-Signatur signieren, wird das Paket nicht über das Internet gesendet.

Test

Laden Sie zum Testen das Stammzertifikat herunter, indem Sie hier oder durch Herunterladen des NuGet Pakets klicken und es mit dem Befehl abrufen:

Get-RootCertificate

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

Wichtig

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

Häufige Fehler

Hier sind häufige Fehler aufgeführt, die auftreten können.

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