Signieren eines MSIX-Pakets mit Device Guard-SignaturSign an MSIX package with Device Guard signing

Wichtig

Wir stellen eine neue Version von Device Guard Signing Service (DGSS) vor, um automatisierender zu sein.We are introducing a new version of the Device Guard Signing Service (DGSS) to be more automation friendly. Die neue Version des Diensts (DGSS v2) steht ab Mitte September 2020 für die Nutzung zur Verfügung, und Sie haben bis zum Ende von Dezember 2020 den Umstieg auf DGSS v2.The new version of the service (DGSS v2) will be available for consumption starting mid-September 2020, and you will have until the end of December 2020 to transition to DGSS v2. Ende Dezember 2020 werden die vorhandenen webbasierten Mechanismen für die aktuelle Version des DGSS-Diensts eingestellt und stehen dann nicht mehr für die Verwendung zur Verfügung.At the end of December 2020, the existing web-based mechanisms for the current version of the DGSS service will be retired and will no longer be available for use. Planen Sie die Migration zur neuen Version des Dienstanbieter zwischen September und Dezember 2020.Please make plans to migrate to the new version of the service between September and December 2020.

Im folgenden finden Sie die wichtigsten Änderungen, die wir an dem Dienst vornehmen:Following are the major changes we are making to the service:

  • Die Methode für die Nutzung des Dienstanbieter wird auf der Grundlage von PowerShell-Cmdlets zu einer automatisierteren Methode geändert.The method for consuming the service will change to a more automation-friendly method based on PowerShell cmdlets. Diese Cmdlets werden als nuget-Download zur Verfügung gestellt.These cmdlets will be available as a NuGet download.
  • Um die gewünschte Isolation zu erreichen, müssen Sie eine neue CI-Richtlinie von DGSS v2 (und optional signieren) erhalten.In order to achieve desired isolation, you will be required to get a new CI policy from DGSS v2 (and optionally sign it).
  • DGSS v2 bietet keine Unterstützung für das Herunterladen von Blatt Zertifikaten, die zum Signieren Ihrer Dateien verwendet werden. (das Stamm Zertifikat steht jedoch weiterhin zum Herunterladen zur Verfügung.)DGSS v2 will not have support for downloading leaf certificates used to sign your files (however, the root certificate will still be available to download). Beachten Sie, dass das Zertifikat, das zum Signieren einer Datei verwendet wird, leicht aus der signierten Datei selbst extrahiert werden kann.Note that the certificate used to sign a file can be easily extracted from the signed file itself. Nachdem DGSS v1 am Ende des Dezember 2020 eingestellt ist, können Sie daher die zum Signieren Ihrer Dateien verwendeten Blatt Zertifikate nicht mehr herunterladen.As a result, after DGSS v1 is retired at the end of December 2020, you will no longer be able to download the leaf certificates used to sign your files.

Die folgenden Funktionen werden über diese PowerShell-Cmdlets zur Verfügung gestellt:The following functionality will be available via these PowerShell cmdlets:

  • CI-Richtlinie erhaltenGet a CI policy
  • Signieren einer CI-RichtlinieSign a CI policy
  • Signieren eines KatalogsSign a catalog
  • Stamm Zertifikat herunterladenDownload root cert
  • Verlauf der Signierungs Vorgänge herunterladenDownload history of your signing operations

Wir werden vor Mitte Oktober 2020 Ausführliche Anweisungen und den nuget-Speicherort freigeben.We will share detailed instructions and NuGet location before mid-October 2020. Wenn Sie Fragen haben, kontaktieren Sie uns unter, um DGSSMigration@microsoft.com Weitere Informationen zur Migration zu erhalten.For any questions, please contact us at DGSSMigration@microsoft.com for more information on migration.

Device Guard-Signierung ist ein Device Guard-Feature, das im Microsoft Store für Unternehmen und Bildungseinrichtungen verfügbar ist.Device Guard signing is a Device Guard feature that is available in the Microsoft Store for Business and Education. Es ermöglicht Unternehmen, sicherzustellen, dass jede APP aus einer vertrauenswürdigen Quelle stammt.It enables enterprises to guarantee that every app comes from a trusted source. Ab Windows 10 Insider Preview Build 18945 können Sie signtool in der Windows SDK verwenden, um Ihre msix-apps mit Device Guard-Signierung zu signieren.Starting in Windows 10 Insider Preview Build 18945, you can use SignTool in the Windows SDK to sign your MSIX apps with Device Guard signing. Diese Featureunterstützung ermöglicht es Ihnen, die Device Guard-Anmeldung problemlos in den Workflow zum entwickeln und Signieren von msix-Paketen einzubinden.This feature support enables you to easily incorporate Device Guard signing into the MSIX package building and signing workflow.

Device Guard-Signierung erfordert Berechtigungen im Microsoft Store für Unternehmen und verwendet Azure Active Directory (AD)-Authentifizierung.Device Guard signing requires permissions in the Microsoft Store for Business and uses Azure Active Directory (AD) authentication. Führen Sie die folgenden Schritte aus, um ein msix-Paket mit Device Guard-Signatur zu signieren.To sign an MSIX package with Device Guard signing, follow these steps.

  1. Wenn Sie dies noch nicht getan haben, registrieren Sie sich für Microsoft Store für Unternehmen oder Microsoft Store für Bildungseinrichtungen.If you haven't done so already, sign up for Microsoft Store for Business or Microsoft Store for Education.

    Hinweis

    Sie müssen dieses Portal nur zum Konfigurieren von Berechtigungen für die Device Guard-Signierung verwenden.You only need to use this portal to configure permissions for Device Guard signing.

  2. Weisen Sie in der Microsoft Store für Unternehmen (oder oder Microsoft Store for Education) selbst eine Rolle mit Berechtigungen zu, die zum Durchführen der Device Guard-Signierung erforderlich sind.In the Microsoft Store for Business (or or Microsoft Store for Education), assign yourself a role with permissions necessary to perform Device Guard signing.
  3. Registrieren Sie Ihre APP im Azure-Portal mit den richtigen Einstellungen, damit Sie Azure AD Authentifizierung mit dem Microsoft Store for Business verwenden können.Register your app in the Azure portal with the proper settings so that you can use Azure AD authentication with the Microsoft Store for Business.
  4. Abrufen eines Azure AD Zugriffs Tokens im JSON-Format.Get an Azure AD access token in JSON format.
  5. Führen Sie signtool aus, um Ihr msix-Paket mit Device Guard-Signatur zu signieren, und übergeben Sie das Azure AD Zugriffs Token, das Sie im vorherigen Schritt abgerufen habenRun SignTool to sign your MSIX package with Device Guard signing, and pass the Azure AD access token you obtained in the previous step.

In den folgenden Abschnitten werden diese Schritte ausführlicher beschrieben.The following sections describes these steps in more detail.

Konfigurieren von Berechtigungen für Device Guard-SignierungConfigure permissions for Device Guard signing

Zum Verwenden der Device Guard-Signierung in den Microsoft Store for Business-oder Microsoft Store for Education benötigen Sie die Device Guard-Signatur Geber Rolle.To use Device Guard signing in the Microsoft Store for Business or Microsoft Store for Education, you need the Device Guard signer role. Dies ist die Rolle mit den geringsten Rechten, die signiert werden kann.This is the least privilege role that has the ability to sign. Andere Rollen wie der globale Administrator und der Besitzer des Abrechnungs Kontos können sich auch signieren.Other roles such as Global Administrator and Billing account owner can also sign.

Hinweis

Die Device Guard-Signatur Geber Rolle wird verwendet, wenn Sie als App signieren.Device Guard Signer role is used when you are signing as an app. Der Besitzer des globalen Administrators und des Abrechnungs Kontos wird verwendet, wenn Sie sich als angemeldete Person anmelden.Global Administrator and Billing Account Owner is used when you sign as a logged in person.

So können Sie Rollen bestätigen oder neu zuweisen:To confirm or reassign roles:

  1. Melden Sie sich bei der Microsoft Store für Unternehmenan.Sign in to the Microsoft Store for Business.
  2. Wählen Sie Verwalten aus, und wählen Sie dann Berechtigungenaus.Select Manage and then select Permissions.
  3. Anzeigen von RollenView Roles.

Weitere Informationen finden Sie unter Rollen und Berechtigungen im Microsoft Store für Unternehmen und Bildungseinrichtungen.For more information, see Roles and permissions in the Microsoft Store for Business and Education.

Registrieren Ihrer APP im Azure-PortalRegister your app in the Azure Portal

So registrieren Sie Ihre APP mit den richtigen Einstellungen, sodass Sie Azure AD Authentifizierung mit dem Microsoft Store for Business verwenden können:To register your app with the proper settings so that you can use Azure AD authentication with the Microsoft Store for Business:

  1. Melden Sie sich beim Azure-Portal an, und befolgen Sie die Anweisungen unter Schnellstart: Registrieren einer Anwendung mit der Microsoft Identity Platform , um die APP zu registrieren, die Device Guard-Signierung verwendet.Sign in to the Azure portal and follow the instructions in Quickstart: Register an application with the Microsoft identity platform to register the app that will use Device Guard signing.

    Hinweis

    Wir empfehlen Ihnen, im Abschnitt Umleitungs-URI die Option öffentlicher Client (Mobile & Desktop) auszuwählen.Under Redirect URI section, we recommend you choose Public client (mobile & desktop). Wenn Sie Web als App-Typ auswählen, müssen Sie einen geheimen Client Schlüssel angeben, wenn Sie später in diesem Prozess ein Azure AD Zugriffs Token abrufen.Otherwise, if you choose Web for the app type, you will need to provide a client secret when you obtain an Azure AD access token later in this process.

  2. Nachdem Sie Ihre APP registriert haben, klicken Sie auf der Hauptseite für Ihre APP in der Azure-Portal auf API-Berechtigungen, und fügen Sie unter den APIs, die von meiner Organisation verwendet werden, eine Berechtigung für die Windows Store für Unternehmen-APIAfter you register your app, on the main page for your app in the Azure portal, click API permissions, under APIs my organization uses and add a permission for the Windows Store for Business API.

  3. Wählen Sie als nächstes Delegierte Berechtigungen aus, und klicken Sie dann auf user_impersonation.Next, select Delegated permissions and then select user_impersonation.

Abrufen eines Azure AD-ZugriffstokensGet an Azure AD access token

Rufen Sie als nächstes ein Azure AD Zugriffs Token für Ihre Azure AD-App im JSON-Format ab.Next, obtain an Azure AD access token for your Azure AD app in JSON format. Hierfür können Sie eine Vielzahl von Programmier-und Skriptsprachen verwenden.You can do this using a variety of programming and scripting languages. Weitere Informationen zu diesem Prozess finden Sie unter Autorisieren des Zugriffs auf Azure Active Directory Webanwendungen mit dem OAuth 2,0-Code Grant-Flow.For more information about this process, see Authorize access to Azure Active Directory web applications using the OAuth 2.0 code grant flow. Es wird empfohlen, dass Sie ein Aktualisierungs Token zusammen mit dem Zugriffs Token abrufen, da Ihr Zugriffs Token innerhalb einer Stunde abläuft.We recommend that you retrieve a refresh token along with the access token, because your access token will expire in one hour.

Hinweis

Wenn Sie Ihre APP als Web -App im Azure-Portal registriert haben, müssen Sie einen geheimen Client Schlüssel angeben, wenn Sie Ihr Token anfordern.If you registered your app as a Web app in the Azure portal, you must provide a client secret when you request your token. Weitere Informationen finden Sie im vorherigen Abschnitt.For more information, see the previous section.

Das folgende PowerShell-Beispiel zeigt, wie Sie ein Zugriffs Token anfordern.The following PowerShell example demonstrates how to request an access token.

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 führen einen erneuten Befehl aus, um die JSON-Datei für die spätere Verwendung zu speichern.We recommand that you save your JSON file for later use.

Signieren des PaketsSign your package

Nachdem Sie Ihr Azure AD Zugriffs Token verwendet haben, können Sie mit SignTool Ihr Paket mit Device Guard signieren.After you have your Azure AD access token, you are ready to use SignTool to sign your package with Device Guard signing. Weitere Informationen zum Verwenden von SignTool zum Signieren von Paketen finden Sie unter Signieren eines App-Pakets mit SignTool.For more information about using SignTool to sign packages, see Sign an app package using SignTool.

Im folgenden Befehlszeilen Beispiel wird veranschaulicht, wie ein Paket mit Device Guard-Signierung signiert wird.The following command line example demonstrates how to sign a package with Device Guard signing.

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

Hinweis

  • Es wird empfohlen, beim Signieren des Pakets eine der Zeitstempel Optionen zu verwenden.We recommend that you use one of the timestamp options when you sign your package. Wenn Sie keinen Zeitstempelanwenden, läuft die Signierung in einem Jahr ab, und die APP muss zurückgetreten werden.If you do not apply a timestamp, the signing will expire in one year and the app will need to be resigned.
  • Stellen Sie sicher, dass der Herausgeber Name im Manifest des Pakets mit dem Zertifikat übereinstimmt, das Sie zum Signieren des Pakets verwenden.Make sure that the publisher name in your package's manifest matches the certificate you are using to sign the package. Mit dieser Funktion wird das Blatt Zertifikat verwendet.With this feature, it will be your leaf certificate. Wenn das Blatt Zertifikat beispielsweise CompanyNameist, muss der Herausgeber Name im Manifest CN = CompanyNamelauten.For example, if leaf certificate is CompanyName, than the publisher name in the manifest must be CN=CompanyName. Andernfalls schlägt der Signatur Vorgang fehl.Otherwise, the signing operation will fail.
  • Nur der SHA256-Algorithmus wird unterstützt.Only the SHA256 algorithm is supported.
  • Wenn Sie das Paket mit Device Guard Signing signieren, wird das Paket nicht über das Internet gesendet.When you sign your package with Device Guard signing, your package is not being sent over the Internet.

TestTest

Zum Testen der Device Guard-Signierung laden Sie Ihr Zertifikat aus dem Microsoft Store for Business-Portal herunter.To test the Device Guard signing, download your certificate from the Microsoft Store for Business Portal.

  1. Melden Sie sich bei der Microsoft Store für Unternehmenan.Sign in to the Microsoft Store for Business.
  2. Wählen Sie Verwalten aus, und wählen Sie dann Einstellungenaus.Select Manage and then select Settings.
  3. Geräteanzeigen.View Devices.
  4. Anzeigen des Stamm Zertifikats Ihrer Organisation für die Verwendung mit Device GuardView Download your organization's root certificate for use with Device Guard
  5. Auf herunterladen klickenClick Download

Installieren Sie das Stamm Zertifikat für die vertrauenswürdigen Stamm Zertifizierungs stellen auf Ihrem Gerät.Install the root certificate to the Trusted Root Certification Authorities on your device . Installieren Sie Ihre neu signierte APP, um zu überprüfen, ob Sie Ihre APP erfolgreich mit Device Guard signiert haben.Install your newly signed app to verify that you have successfully signed your app with Device Guard signing.

Häufige FehlerCommon errors

Hier finden Sie häufige Fehler, die auftreten können.Here are common errors you might encounter.

  • 0x800700d: dieser häufige Fehler bedeutet, dass das Format der Azure AD JSON-Datei ungültig ist.0x800700d: This common error means that the format of the Azure AD JSON file is invalid.
  • Möglicherweise müssen Sie die Geschäftsbedingungen Microsoft Store für Unternehmen akzeptieren, bevor Sie das Stamm Zertifikat der Device Guard-Signatur herunterladen.You may need to accept the terms and conditions of Microsoft Store for Business before downloading the root certificate of Device Guard Signing. Hierzu können Sie eine kostenlose App im Portal erwerben.This can be done by acquiring a free app in the portal.