Firmare un pacchetto MSIX con la firma di Device Guard

Importante

Microsoft Store per le aziende e Microsoft Store per la formazione è stato ritirato nel primo trimestre del 2023. Per altre informazioni su questa modifica, vedere Evoluzione del Microsoft Store per le aziende e dell'istruzione.

È possibile continuare a usare le funzionalità di Device Guard Signing Service v2 (DGSS) correnti fino a quel momento. DGSS verrà sostituito dal servizio di firma del codice di Azure e supporterà i criteri di Windows Defender Application Control (WDAC) e le esigenze di firma dei file di catalogo.

Device Guard Signing Service v2 (DGSS) è un servizio di firma del codice fornito con l'account tenant di Microsoft Store per le aziende e Education esistente. Puoi usare DGSS per firmare app line-of-business, file di catalogo e criteri WDAC (Windows Defender Application Control). Consente alle aziende di garantire che ogni app provenga da un'origine attendibile. È possibile usare SignTool in Windows SDK e DGSSv2 dlib nel pacchetto NuGet per firmare le app MSIX con la firma di Device Guard. Questo supporto delle funzionalità consente di incorporare facilmente l'accesso di Device Guard alla compilazione e alla firma del pacchetto MSIX.

È disponibile un pacchetto NuGet contenente i componenti DGSS v2 necessari e la documentazione sulla migrazione. Leggere le Condizioni per l'utilizzo di Microsoft incluse nel pacchetto NuGet; si noti che l'utilizzo di DGSS implica l'accettazione di queste condizioni. Per eventuali domande, contattare Microsoft all'indirizzo DGSSMigration@microsoft.com.

Nota

Dopo aver scaricato microsoft.acs/dgss.client.nupkg, è possibile rinominare .zip ed estrarre il contenuto per i file e informazioni aggiuntive

La firma di Device Guard richiede autorizzazioni nel Microsoft Store per le aziende e usa l'autenticazione di Azure Active Directory (AD). Per firmare un pacchetto MSIX con la firma di Device Guard, seguire questa procedura.

  1. Nel Microsoft Store per le aziende (o Microsoft Store per la formazione) assegnare a se stessi un ruolo con le autorizzazioni necessarie per eseguire la firma di Device Guard.

    Nota

    È sufficiente usare questo portale per configurare le autorizzazioni per la firma di Device Guard.

  2. Registrare l'app nel portale di Azure con le impostazioni appropriate in modo da poter usare l'autenticazione di Azure AD con il Microsoft Store per le aziende.
  3. Ottenere un token di accesso di Azure AD in formato JSON.
  4. Eseguire SignTool per firmare il pacchetto MSIX con la firma di Device Guard e passare il token di accesso di Azure AD ottenuto nel passaggio precedente.

Le sezioni seguenti descrivono questi passaggi in modo più dettagliato.

Configurare le autorizzazioni per la firma di Device Guard

Per usare l'accesso di Device Guard nel Microsoft Store per le aziende o Microsoft Store per la formazione, è necessario il ruolo del firmatario di Device Guard. Si tratta del ruolo con privilegi minimi che ha la possibilità di firmare. Altri ruoli, ad esempio amministratore globale e proprietario dell'account di fatturazione, possono anche firmare.

Nota

Il ruolo Di firmatario di Device Guard viene usato quando si firma come app. L'amministratore globale e il proprietario dell'account di fatturazione vengono usati quando si accede come utente connesso.

Per confermare o riassegnare i ruoli:

  1. Accedere a Microsoft Store for Business.
  2. Selezionare Gestisci e quindi autorizzazioni.
  3. Visualizzare i ruoli.

Per altre informazioni, vedere Ruoli e autorizzazioni in Microsoft Store per le aziende e Education.

Registrare l'app nel portale di Azure

Per registrare l'app con le impostazioni appropriate in modo da poter usare l'autenticazione di Azure AD con il Microsoft Store per le aziende:

  1. Passare a https://portal.azure.comed eseguire l'autenticazione come amministratore globale tenant

  2. Passare al servizio Azure Active Directory .

  3. Nel menu a sinistra in Gestisci individuare e selezionare Registrazioni app

  4. Nella barra dei menu selezionare Nuova registrazione

  5. Nel campo Nome immettere DGSSv2.

    Nota

    Il campo Nome viene usato per facilitare l'identificazione della registrazione dell'app nel portale di Azure. È possibile usare qualsiasi nome desiderato. Ai fini di questa dimostrazione, usiamo DGSSv2 semplicemente per semplificare l'identificazione.

  6. In Tipi di account supportati selezionare l'impostazione appropriata.

    • Account solo in questa directory dell'organizzazione (tenant singolo): questa opzione è consigliata a meno che non sia necessaria una distribuzione multi-tenant specifica. Tutti gli account utente e guest nella directory possono usare l'applicazione o l'API.
    • Account in qualsiasi directory organizzativa (qualsiasi directory di Azure AD - Multi-tenant): questa opzione è ideale per un'organizzazione con più tenant di Azure AD, ma richiede solo un singolo punto di attendibilità per la firma del codice. Tutti gli utenti con un account Microsoft aziendale o dell'istituto di istruzione possono usare l'applicazione o l'API. Sono inclusi gli istituti di istruzione e le aziende che usano Office 365.
    • Account in qualsiasi directory organizzativa (qualsiasi directory di Azure AD - Multi-tenant) e account Microsoft personali (ad esempio, Skype, Xbox): questa opzione non è consigliata perché è aperta per l'uso da parte degli account Microsoft a livello di consumer. Tutti gli utenti con un account aziendale o dell'istituto di istruzione o con un account Microsoft personale possono usare l'applicazione o l'API. Include istituti di istruzione e aziende che usano Office 365, nonché account personali usati per accedere a servizi come Xbox e Skype.
    • Solo account Microsoft personali: come l'ultima opzione questa opzione non è consigliata. Questo non è solo perché consente account personali, ma perché questa opzione supporta solo account personali. Gli account Azure AD vengono bloccati in modo esplicito. Account personali usati per accedere a servizi come Xbox e Skype
  7. Nell'elenco a discesa URI di reindirizzamento selezionare Client pubblico/nativo (mobile e desktop) dal menu di selezione a discesa. Immettere https://dgss.microsoft.com nella casella di testo.

  8. Fare clic su Registra

  9. Verso l'alto a destra della pagina individuare la voce denominata URI di reindirizzamento. Selezionare la riga sotto etichetta 0 web, 0 spa, 1 client pubblico

  10. Individuare la voce Consenti flussi client pubblici nella sezione Impostazioni avanzate. Impostare questo valore su

  11. Fare clic su Salva nella parte superiore della pagina

  12. Nel menu a sinistra selezionare Autorizzazioni API

  13. Nella barra dei menu selezionare Aggiungi un'autorizzazione. Nel menu a comparsa selezionare la scheda API usate dall'organizzazione . Nella casella di ricerca immettere Windows Store per le aziende

Nota

Se Windows Store per le aziende non viene visualizzato nell'elenco, aprire una nuova scheda del browser e passare a https://businessstore.microsoft.com e quindi accedere come amministratore globale tenant. Chiudere la scheda del browser, quindi eseguire di nuovo la ricerca.

  1. Selezionare Windows Store per le aziende, quindi selezionare Autorizzazioni delegate. Controllare user_impersonation.
  2. Fare clic su Aggiungi autorizzazioni nella parte inferiore della pagina. Nel menu a sinistra selezionare Panoramica per tornare alla panoramica della registrazione dell'app DGSSv2.

Ottenere un token di accesso di Azure AD

Ottenere quindi un token di accesso di Azure AD per l'app Azure AD in formato JSON. A tale scopo, è possibile usare un'ampia gamma di linguaggi di programmazione e scripting. Per altre informazioni su questo processo, vedere Autorizzare l'accesso alle applicazioni Web di Azure Active Directory usando il flusso di concessione del codice OAuth 2.0. È consigliabile recuperare un token di aggiornamento insieme al token di accesso, perché il token di accesso scadrà in un'ora.

Nota

Se Windows Store per le aziende non viene visualizzato nell'elenco, aprire una nuova scheda del browser e passare a https://businessstore.microsoft.com e quindi accedere come amministratore globale tenant. Chiudere la scheda del browser, quindi eseguire di nuovo la ricerca.

L'esempio di PowerShell seguente illustra come richiedere un token di accesso.

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

È consigliabile salvare il file JSON per usarlo in un secondo momento.

Ottenere la DLL di firma di Device Guard versione 2

Per firmare con La firma di Device Guard versione 2, ottenere il Microsoft.Acs.Dlib.dll scaricando il pacchetto NuGet che verrà usato per firmare il pacchetto. Questo è necessario anche per ottenere il certificato radice.

Firmare il pacchetto

Dopo aver ottenuto il token di accesso di Azure AD, è possibile usare SignTool per firmare il pacchetto con la firma di Device Guard. Per altre informazioni sull'uso di SignTool per firmare i pacchetti, vedere Firmare un pacchetto dell'app con SignTool.

L'esempio della riga di comando seguente illustra come firmare un pacchetto con la firma di Device Guard versione 2.

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

Nota

  • I certificati generati per la firma di Device Guard v2 sono validi per un giorno. È consigliabile usare una delle opzioni di timestamp quando si firma il pacchetto. Se non si applica un timestamp, la firma scadrà in un giorno e l'app dovrà essere rimessa.
  • Assicurarsi che il nome dell'editore nel manifesto del pacchetto corrisponda al certificato usato per firmare il pacchetto. Con questa funzionalità, sarà il certificato foglia. Ad esempio, se il certificato foglia è CompanyName, il nome dell'editore nel manifesto deve essere CN=CompanyName. In caso contrario, l'operazione di firma avrà esito negativo.
  • È supportato solo l'algoritmo SHA256.
  • Quando si firma il pacchetto con la firma di Device Guard, il pacchetto non viene inviato tramite Internet.

  Test

Per testare, scaricare il certificato radice facendo clic qui o scaricando il pacchetto NuGet e ottenendolo con il comando :

Get-RootCertificate

Installare il certificato radice nelle autorità di certificazione radice attendibili nel dispositivo. Installare l'app appena firmata per verificare che l'app sia stata firmata correttamente con la firma di Device Guard.

Importante

Per ottenere l'isolamento, distribuire il criterio CI WDAC per considerare attendibili le app firmate con DGSSv2. Leggere la documentazione di readme_cmdlets e la migrazione da DGSSv1 a DGSSv2 inclusa nel pacchetto NuGet.

Errori comuni

Di seguito sono riportati errori comuni che possono verificarsi.

  • 0x800700d: questo errore comune indica che il formato del file JSON di Azure AD non è valido.
  • Potrebbe essere necessario accettare i termini e le condizioni di Microsoft Store per le aziende prima di scaricare il certificato radice della firma di Device Guard. A tale scopo, è possibile acquisire un'app gratuita nel portale.