Signieren eines MSIX-Pakets mit Device Guard-Signatur

Wichtig

Microsoft Store für Unternehmen und Microsoft Store für Bildungseinrichtungen wurden im ersten Quartal 2023 eingestellt. Weitere Informationen zu dieser Änderung finden Sie unter "Entwickeln der Microsoft Store für Unternehmen und Bildung".

Sie können die aktuellen DgSS-Funktionen (Device Guard Signing Service v2) bis zu diesem Zeitpunkt weiterhin verwenden. DGSS wird durch den Azure Code Signing Service (ACS) ersetzt und unterstützt Ihre Windows Defender Application Control (WDAC)-Richtlinien und Katalogdateisignaturanforderungen.

Der Device Guard-Signaturdienst v2 (DGSS) ist ein Codesignaturdienst, der im Lieferumfang Ihres vorhandenen Microsoft Store für Unternehmen- und Education-Mandantenkontos enthalten ist. Sie können die DGSS verwenden, um Branchen-Apps, Katalogdateien und WDAC-Richtlinien (Windows Defender Application Control) zu signieren. Unternehmen können damit sicherstellen, dass jede App aus einer vertrauenswürdigen Quelle stammt. Mittels SignTool im Windows SDK und DGSSv2-dlib im NuGet-Paket können Sie Ihre MSIX-Apps mit Device Guard-Signatur signieren. Die Unterstützung dieses Features ermöglicht Ihnen die einfache Aufnahme der Device Guard-Signatur in den Workflow zum Erstellen und Signieren von MSIX-Paketen.

Es steht ein NuGet-Paket mit den erforderlichen DGSS v2-Komponenten und der Migrationsdokumentation zur Verfügung. Lesen Sie bitte die im NuGet-Paket enthaltenen Microsoft-Nutzungsbedingungen. Beachten Sie, dass diese Bedingungen mit der Nutzung von DGSS implizit akzeptiert werden. Bei Fragen kontaktieren Sie uns bitte unter DGSSMigration@microsoft.com.

Hinweis

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

Die Device Guard-Signatur erfordert Berechtigungen im Microsoft Store für Unternehmen und verwendet die Azure Active Directory (AD)-Authentifizierung. Gehen Sie zum Signieren eines MSIX-Pakets mit Device Guard-Signatur nach den folgenden Schritten vor.

  1. Weisen Sie sich im Microsoft Store für Unternehmen (oder Microsoft Store für Bildungseinrichtungen) selbst eine Rolle mit Berechtigungen zu, die zum Durchführen der Device Guard-Signatur erforderlich sind.

    Hinweis

    Sie müssen dieses Portal nur zum Konfigurieren von Berechtigungen für die Device Guard-Signatur verwenden.

  2. Registrieren Sie Ihre App im Azure-Portal mit den richtigen Einstellungen, damit Sie die Azure AD-Authentifizierung für den Microsoft Store für Unternehmen verwenden können.
  3. Rufen Sie ein Azure AD-Zugriffstoken im JSON-Format ab.
  4. Führen Sie zum Signieren Ihres MSIX-Pakets mit Device Guard-Signatur SignTool aus und übergeben Sie das im vorherigen Schritt abgerufene Azure AD-Zugriffstoken.

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

Konfigurieren von Berechtigungen für die Device Guard-Signatur

Zum Verwenden der Device Guard-Signatur im Microsoft Store für Unternehmen oder Microsoft Store für Bildungseinrichtungen brauchen Sie die Rolle Device Guard-Signer. Das ist die Rolle mit den geringsten Rechten, die zum Signieren berechtigt. Andere Rollen wie Globaler Administrator und Besitzer des Abrechnungskontos sind ebenfalls zum Signieren berechtigt.

Hinweis

Die Rolle Device Guard-Signer wird zum Signieren als App verwendet. Globaler Administrator und Besitzer des Abrechnungskontos werden zum Signieren als angemeldete Person verwendet.

Gehen Sie zum Bestätigen oder Neuzuweisen von Rollen folgendermaßen vor:

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

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

Registrieren Ihrer App im Azure-Portal

Gehen Sie zum Registrieren Ihrer App im Azure-Portal mit den richtigen Einstellungen, damit Sie die Azure AD-Authentifizierung für den Microsoft Store für Unternehmen verwenden können, folgendermaßen vor:

  1. Navigieren Sie zu https://portal.azure.com und authentifizieren Sie sich als globaler Administrator für den Mandanten

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

  3. Suchen Sie im linken Menü unter Verwalten nach der Option App-Registrierungen und wählen Sie sie aus

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

  5. Geben Sie im Feld Name DGSSv2 ein.

    Hinweis

    Das Feld Name dient zum einfachen Identifizieren der App-Registrierung im Azure-Portal. Es kann jeder gewünschte Name verwendet werden. Für die Zwecke diese Demonstration verwenden wir zur leichten Identifizierung ganz einfach DGSSv2.

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

    • Konten nur in diesem Organisationsverzeichnis (Einzelmandant) – Diese Option wird empfohlen, es sei denn, es gibt bestimmte Anforderungen an eine mehrinstanzenfähige Bereitstellung. Alle Benutzer‑ und Gastkonten in Ihrem Verzeichnis können Ihre Anwendung oder API verwenden.
    • Konten in einem beliebigen Organisationsverzeichnis (jedes Azure AD-Verzeichnis – Mehrinstanzenfähig) – Diese Option eignet sich am besten für eine Organisation mit mehreren Azure AD-Mandanten, erfordert jedoch nur einen einzelnen Vertrauenspunkt für die Codesignierung. 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 (jedes Azure AD-Verzeichnis – Mehrinstanzenfähig) und persönliche Microsoft-Konten (z. B. Skype, Xbox) – Diese Option wird nicht empfohlen, da sie für die Verwendung durch Microsoft-Konten auf Verbraucherebene offen ist. Alle Benutzer mit einem Geschäfts-, Schul- oder Unikonto bzw. einem persönlichen Microsoft-Konto können Ihre Anwendung oder API verwenden. Dazu gehören Bildungseinrichtungen und Unternehmen, die Office 365 nutzen, sowie persönliche Konten, mit denen die Anmeldung bei Diensten wie Xbox und Skype erfolgt.
    • Nur persönliche Microsoft-Konten – Ebenso wie die letzte Option wird auch diese Option nicht empfohlen. Dies liegt nicht nur daran, dass persönliche Konten zulässig sind, sondern auch daran, dass diese Option nur persönliche Konten unterstützt. Azure AD-Konten werden explizit blockiert. Zum Anmelden bei Diensten wie Xbox und Skype verwendete persönliche Konten
  7. Wählen Sie im Dropdownmenü der Umleitungs-URI Öffentlicher Client/nativ (Mobil und 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 dem Eintrag mit der Bezeichnung Umleitungs-URIs. Wählen Sie die Zeile darunter mit der Bezeichnung 0 Web, 0 Spa, 1 öffentlicher Client

  10. Suchen Sie im Abschnitt Erweiterte Einstellungen nach dem Eintrag mit der Bezeichnung Öffentliche Clientflows zulassen. Setzen Sie diesen Wert auf Ja

  11. Klicken Sie oben auf der Seite auf Speichern

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

  13. Wählen Sie in der Menüleiste Berechtigung hinzufügen aus. Wählen Sie im Flyout-Menü die Registerkarte Von meiner Organisation verwendete APIs aus. Geben Sie im Suchfeld Windows Store für Unternehmen ein

Hinweis

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

  1. Wählen Sie Windows Store für Unternehmen und dann Delegierte Berechtigungen aus. Markieren Sie user_impersonation.
  2. Klicken Sie unten auf der Seite auf Berechtigungen hinzufügen. Wählen Sie im linken Menü Übersicht aus, um zur Übersicht über die 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 mit dem Flow zum Erteilen des OAuth 2.0-Codes. Wir empfehlen das Abrufen eines Aktualisierungstokens zusammen mit dem Zugriffstoken, da Ihr Zugriffstoken nach einer Stunde abläuft.

Hinweis

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

Das folgenden Beispiel für PowerShell veranschaulicht das Abrufen eines Zugriffstoken.

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, die JSON-Datei zur späteren Verwendung zu speichern.

Abrufen der DLL für Device Guard Signing Version 2

Zum Signieren mit Device Guard Signing Version 2 müssen Sie die zum Signieren des Pakets verwendete Datei Microsoft.Acs.Dlib.dll durch Herunterladen des NuGet-Pakets abrufen. Das ist auch zum Beschaffen des Stammzertifikats erforderlich.

Signieren Ihrer Pakete

Wenn Sie Ihr Azure AD-Zugriffstoken haben, können Sie Ihr Paket über SignTool per Device Guard-Signatur signieren. Weitere Informationen zur Verwendung von SignTool zum Signieren von Paketen finden Sie unter Signieren eines App-Pakets mit SignTool.

Im folgenden Befehlszeilenbeispiel wird das Signieren eines Pakets mit Device Guard Signing Version 2 veranschaulicht.

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

Hinweis

  • Die für Device Guard Signing v2 generierten Zertifikate sind für einen Tag gültig. Wir empfehlen, beim Signieren des Pakets eine der Zeitstempeloptionen zu verwenden. Ohne Zeitstempel läuft die Signatur nach einem Tag ab, und die App muss neu signiert werden.
  • Stellen Sie sicher, dass der Name des Herausgebers im Manifest Ihres Pakets mit dem zum Signieren des Pakets verwendeten Zertifikat übereinstimmt. Mit diesem Feature ist es Ihr untergeordnetes Zertifikat. Wenn das untergeordnete Zertifikat beispielsweise CompanyName lautet, muss der Name des Herausgebers im Manifest CN=CompanyName sein. Andernfalls schlägt der Signierungsvorgang fehl.
  • Es wird nur der SHA256-Algorithmus unterstützt.
  • Wenn Sie Ihr Paket mit Device Guard-Signatur signieren, wird Ihr Paket nicht über das Internet gesendet.

Testen

Laden Sie zum Testen das Stammzertifikat herunter, indem Sie hier klicken oder das NuGet-Paket herunterladen und mit dem folgenden Befehl abrufen:

Get-RootCertificate

Installieren Sie das Stammzertifikat unter Vertrauenswürdige Stammzertifizierungsstellen auf Ihrem Gerät. Installieren Sie Ihre neu signierte App, um zu überprüfen, ob Sie Ihre App mit Device Guard-Signatur erfolgreich signiert haben.

Wichtig

Stellen Sie zwecks Isolation die WDAC CI-Richtlinie so bereit, dass die mit DGSSv2 signierten Apps als vertrauenswürdig gelten. Lesen Sie unbedingt die Dokumentation zu readme_cmdlets und zur Migration von DGSSv1 zu DGSSv2, die im NuGet-Paket enthalten ist.

Häufige Fehler

Nachfolgend finden Sie gängige Fehler, die auftreten könnten.

  • 0x800700d: Dieser gängige Fehler bedeutet, dass das Format der Azure AD-JSON-Datei ungültig ist.
  • Sie müssen gegebenenfalls die Geschäftsbedingungen des Microsoft Store für Unternehmen akzeptieren, bevor Sie das Stammzertifikat für die Device Guard-Signatur herunterladen. Dies kann durch den Erwerb einer kostenlosen App im Portal geschehen.