Firmare un pacchetto MSIX con la firma di Device GuardSign an MSIX package with Device Guard signing

Importante

È stata introdotta una nuova versione del servizio di firma di Device Guard (DGSS) per una maggiore automazione.We are introducing a new version of the Device Guard Signing Service (DGSS) to be more automation friendly. La nuova versione del servizio (DGSS v2) sarà disponibile per l'utilizzo a partire dalla metà del settembre 2020 e sarà disponibile fino alla fine del 2020 dicembre per passare a 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. Alla fine di dicembre 2020, i meccanismi basati sul Web esistenti per la versione corrente del servizio DGSS verranno ritirati e non saranno più disponibili per l'uso.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. Eseguire piani per la migrazione alla nuova versione del servizio tra il settembre e il 2020 dicembre.Please make plans to migrate to the new version of the service between September and December 2020.

Di seguito sono riportate le modifiche principali apportate al servizio:Following are the major changes we are making to the service:

  • Il metodo per l'utilizzo del servizio cambierà in un metodo più semplice e intuitivo basato sui cmdlet di PowerShell.The method for consuming the service will change to a more automation-friendly method based on PowerShell cmdlets. Questi cmdlet saranno disponibili come download di NuGet.These cmdlets will be available as a NuGet download.
  • Per ottenere l'isolamento desiderato, sarà necessario ottenere un nuovo criterio CI da DGSS V2 e, facoltativamente, firmarlo.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 non avrà il supporto per il download di certificati foglia usati per firmare i file. Tuttavia, il certificato radice sarà ancora disponibile per il download.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). Si noti che il certificato usato per firmare un file può essere facilmente estratto dal file firmato.Note that the certificate used to sign a file can be easily extracted from the signed file itself. Di conseguenza, dopo il ritiro di DGSS V1 alla fine del 2020 dicembre, non sarà più possibile scaricare i certificati foglia usati per firmare i file.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.

Le funzionalità seguenti saranno disponibili tramite questi cmdlet di PowerShell:The following functionality will be available via these PowerShell cmdlets:

  • Ottenere un criterio CIGet a CI policy
  • Firmare un criterio CISign a CI policy
  • Firma di un catalogoSign a catalog
  • Scarica certificato radiceDownload root cert
  • Scarica la cronologia delle operazioni di firmaDownload history of your signing operations

Si condivideranno le istruzioni dettagliate e la località NuGet prima della metà dell'ottobre 2020.We will share detailed instructions and NuGet location before mid-October 2020. Per eventuali domande, contattaci all'indirizzo DGSSMigration@microsoft.com per ulteriori informazioni sulla migrazione.For any questions, please contact us at DGSSMigration@microsoft.com for more information on migration.

La firma di Device Guard è una funzionalità di Device Guard disponibile nel Microsoft Store for Business and Education.Device Guard signing is a Device Guard feature that is available in the Microsoft Store for Business and Education. Consente alle aziende di garantire che ogni app provenga da una fonte attendibile.It enables enterprises to guarantee that every app comes from a trusted source. A partire da Windows 10 Insider Preview Build 18945, è possibile usare SignTool nel Windows SDK per firmare le app MSIX con la firma di Device Guard.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. Questo supporto della funzionalità consente di incorporare facilmente l'accesso di Device Guard al flusso di lavoro di creazione e firma del pacchetto MSIX.This feature support enables you to easily incorporate Device Guard signing into the MSIX package building and signing workflow.

La firma di Device Guard richiede le autorizzazioni nel Microsoft Store for business e usa l'autenticazione Azure Active Directory (AD).Device Guard signing requires permissions in the Microsoft Store for Business and uses Azure Active Directory (AD) authentication. Per firmare un pacchetto MSIX con la firma di Device Guard, seguire questa procedura.To sign an MSIX package with Device Guard signing, follow these steps.

  1. Se non è già stato fatto, iscriversi a Microsoft Store for business o Microsoft Store per la formazione.If you haven't done so already, sign up for Microsoft Store for Business or Microsoft Store for Education.

    Nota

    È sufficiente usare questo portale per configurare le autorizzazioni per la firma di Device Guard.You only need to use this portal to configure permissions for Device Guard signing.

  2. In Microsoft Store for business (o o Microsoft Store per la formazione), assegnare a se stessi un ruolo con le autorizzazioni necessarie per eseguire la firma di Device Guard.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. Registrare l'app nel portale di Azure con le impostazioni appropriate per poter usare l'autenticazione Azure ad con la Microsoft Store for business.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. Ottenere un token di accesso Azure AD in formato JSON.Get an Azure AD access token in JSON format.
  5. Eseguire SignTool per firmare il pacchetto MSIX con la firma di Device Guard e passare il token di accesso Azure AD ottenuto nel passaggio precedente.Run SignTool to sign your MSIX package with Device Guard signing, and pass the Azure AD access token you obtained in the previous step.

Le sezioni seguenti illustrano questi passaggi in modo più dettagliato.The following sections describes these steps in more detail.

Configurare le autorizzazioni per la firma di Device GuardConfigure permissions for Device Guard signing

Per usare la firma di Device Guard nel Microsoft Store for business o Microsoft Store per la formazione, è necessario il ruolo del firmatario di Device Guard .To use Device Guard signing in the Microsoft Store for Business or Microsoft Store for Education, you need the Device Guard signer role. Si tratta del ruolo con privilegi minimi che è in grado di firmare.This is the least privilege role that has the ability to sign. Anche altri ruoli, come amministratore globale e proprietario dell'account di fatturazione , possono firmare.Other roles such as Global Administrator and Billing account owner can also sign.

Nota

Il ruolo del firmatario di Device Guard viene usato quando si esegue la firma come app.Device Guard Signer role is used when you are signing as an app. L'amministratore globale e il proprietario dell'account di fatturazione vengono usati quando si accede come utente connesso.Global Administrator and Billing Account Owner is used when you sign as a logged in person.

Per confermare o riassegnare i ruoli:To confirm or reassign roles:

  1. Accedere al Microsoft Store for business.Sign in to the Microsoft Store for Business.
  2. Selezionare Gestisci e quindi selezionare autorizzazioni.Select Manage and then select Permissions.
  3. Visualizzazione dei ruoli.View Roles.

Per ulteriori informazioni, vedere ruoli e autorizzazioni nel Microsoft Store for Business and Education.For more information, see Roles and permissions in the Microsoft Store for Business and Education.

Registrare l'app nel portale di AzureRegister your app in the Azure Portal

Per registrare l'app con le impostazioni appropriate, in modo da poter usare l'autenticazione Azure AD con Microsoft Store for business:To register your app with the proper settings so that you can use Azure AD authentication with the Microsoft Store for Business:

  1. Accedere al portale di Azure e seguire le istruzioni riportate nella Guida introduttiva: registrare un'applicazione con la piattaforma di identità Microsoft per registrare l'app che userà la firma di Device Guard.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.

    Nota

    Nella sezione URI di reindirizzamento è consigliabile scegliere client pubblico (mobile & desktop).Under Redirect URI section, we recommend you choose Public client (mobile & desktop). In caso contrario, se si sceglie Web per il tipo di app, sarà necessario fornire un segreto client quando si ottiene un token di accesso Azure ad più avanti in questo processo.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. Dopo aver registrato l'app, nella pagina principale dell'app nella portale di Azure fare clic su autorizzazioni API, in API l'organizzazione USA e aggiungere un'autorizzazione per l'API di Windows Store per le aziende.After 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. Quindi selezionare autorizzazioni delegate e quindi user_impersonation.Next, select Delegated permissions and then select user_impersonation.

Ottenere un token di accesso di Azure ADGet an Azure AD access token

Ottenere quindi un token di accesso Azure AD per l'app Azure AD in formato JSON.Next, obtain an Azure AD access token for your Azure AD app in JSON format. Questa operazione può essere eseguita usando un'ampia gamma di linguaggi di programmazione e di scripting.You can do this using a variety of programming and scripting languages. Per altre informazioni su questo processo, vedere autorizzare l'accesso alle applicazioni web Azure Active Directory usando il flusso di concessione del codice OAuth 2,0.For more information about this process, see Authorize access to Azure Active Directory web applications using the OAuth 2.0 code grant flow. Si consiglia di recuperare un token di aggiornamento con il token di accesso, perché il token di accesso scadrà tra un'ora.We recommend that you retrieve a refresh token along with the access token, because your access token will expire in one hour.

Nota

Se l'app è stata registrata come app Web nella portale di Azure, è necessario fornire un segreto client quando si richiede il token.If you registered your app as a Web app in the Azure portal, you must provide a client secret when you request your token. Per altre informazioni, vedere la sezione precedente.For more information, see the previous section.

Nell'esempio di PowerShell seguente viene illustrato come richiedere un token di accesso.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
}

Nota

Si esegue il comando per salvare il file JSON per un uso successivo.We recommand that you save your JSON file for later use.

Firma del pacchettoSign your package

Dopo aver eseguito il token di accesso Azure AD, è possibile usare SignTool per firmare il pacchetto con la firma di Device Guard.After you have your Azure AD access token, you are ready to use SignTool to sign your package with Device Guard signing. Per altre informazioni sull'uso di SignTool per firmare i pacchetti, vedere firmare un pacchetto dell'app con SignTool.For more information about using SignTool to sign packages, see Sign an app package using SignTool.

L'esempio di riga di comando seguente illustra come firmare un pacchetto con la firma di Device Guard.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>

Nota

  • Quando si firma il pacchetto, è consigliabile usare una delle opzioni timestamp.We recommend that you use one of the timestamp options when you sign your package. Se non si applica un timestamp, la firma scadrà tra un anno e sarà necessario firmare nuovamente l'app.If you do not apply a timestamp, the signing will expire in one year and the app will need to be resigned.
  • Verificare che il nome del server di pubblicazione nel manifesto del pacchetto corrisponda al certificato usato per firmare il pacchetto.Make sure that the publisher name in your package's manifest matches the certificate you are using to sign the package. Con questa funzionalità, sarà il certificato foglia.With this feature, it will be your leaf certificate. Se, ad esempio, il certificato foglia è CompanyName, il nome del server di pubblicazione nel manifesto deve essere CN = CompanyName.For example, if leaf certificate is CompanyName, than the publisher name in the manifest must be CN=CompanyName. In caso contrario, l'operazione di firma avrà esito negativo.Otherwise, the signing operation will fail.
  • È supportato solo l'algoritmo SHA256.Only the SHA256 algorithm is supported.
  • Quando si firma il pacchetto con la firma di Device Guard, il pacchetto non viene inviato tramite Internet.When you sign your package with Device Guard signing, your package is not being sent over the Internet.

TestTest

Per testare la firma di Device Guard, scaricare il certificato dal portale Microsoft Store for business.To test the Device Guard signing, download your certificate from the Microsoft Store for Business Portal.

  1. Accedere al Microsoft Store for business.Sign in to the Microsoft Store for Business.
  2. Selezionare Gestisci e quindi selezionare Impostazioni.Select Manage and then select Settings.
  3. Visualizzare i dispositivi.View Devices.
  4. Visualizza scaricare il certificato radice dell'organizzazione per l'uso con Device GuardView Download your organization's root certificate for use with Device Guard
  5. Fare clic su downloadClick Download

Installare il certificato radice per le autorità di certificazione radice attendibili nel dispositivo.Install the root certificate to the Trusted Root Certification Authorities on your device . Installare l'app appena firmata per verificare di aver firmato correttamente l'app con la firma di Device Guard.Install your newly signed app to verify that you have successfully signed your app with Device Guard signing.

Errori comuniCommon errors

Di seguito sono riportati gli errori comuni che potrebbero verificarsi.Here are common errors you might encounter.

  • 0x800700d: questo errore comune indica che il formato del file JSON Azure AD non è valido.0x800700d: This common error means that the format of the Azure AD JSON file is invalid.
  • Prima di scaricare il certificato radice della firma di Device Guard, potrebbe essere necessario accettare i termini e le condizioni di Microsoft Store for business.You may need to accept the terms and conditions of Microsoft Store for Business before downloading the root certificate of Device Guard Signing. Questa operazione può essere eseguita acquisendo un'app gratuita nel portale.This can be done by acquiring a free app in the portal.