Firmare un pacchetto MSIX con la firma di Device Guard
Importante
Microsoft Store per le aziende e Microsoft Store per la formazione verranno ritirati nel primo trimestre del 2023. È possibile continuare a usare le funzionalità correnti delle app gratuite fino a quel momento. Per altre informazioni su questa modifica, vedere Evoluzione del Microsoft Store per le aziende e dell'istruzione
Importante
Il servizio di firma di Device Guard v2 (DGSS v2) è ora disponibile.
Maggio 2021- Il meccanismo esistente basato sul Web per il servizio di firma di Device Guard v1 verrà ritirato il 9 giugno 2021. Passare alla versione basata su PowerShell del servizio (DGSS v2). È 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 in .zip ed estrarre contenuti per file e informazioni aggiuntive
La firma di Device Guard è una funzionalità di Device Guard disponibile nei Microsoft Store per le aziende e education. 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 di funzionalità consente di incorporare facilmente l'accesso di Device Guard alla compilazione e alla firma del pacchetto MSIX.
La firma di Device Guard richiede autorizzazioni nel Microsoft Store per le aziende e usa l'autenticazione Azure Active Directory (AD). Per firmare un pacchetto MSIX con la firma di Device Guard, seguire questa procedura.
- Se non è già stato fatto, iscriversi per Microsoft Store per le aziende o Microsoft Store per la formazione.
Nota
È sufficiente usare questo portale per configurare le autorizzazioni per la firma di Device Guard.
- Nella 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.
- 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.
- Ottenere un token di accesso di Azure AD in formato JSON.
- 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 a Device Guard nel Microsoft Store per le aziende o Microsoft Store per la formazione, è necessario il ruolo di firmatario di Device Guard. Si tratta del ruolo con privilegi minimi che ha la possibilità di firmare. È anche possibile firmare altri ruoli, ad esempio l'amministratore globale e il proprietario dell'account di fatturazione .
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:
- Accedere a Microsoft Store for Business.
- Selezionare Gestisci e quindi autorizzazioni.
- 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:
Passare a https://portal.azure.come autenticarsi come amministratore globale del tenant
Passare al servizio di Azure Azure Active Directory.
Dal menu a sinistra in Gestisci individuare e selezionare Registrazioni app
Nella barra dei menu selezionare Nuova registrazione
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.
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 della 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 aziendale o dell'istituto di istruzione di Microsoft 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 di 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 scuole 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 gli account personali. Gli account Azure AD vengono bloccati in modo esplicito. Account personali usati per accedere a servizi come Xbox e Skype
Nell'elenco a discesa URI di reindirizzamento selezionare Client pubblico/nativo (desktop per dispositivi mobili & ) dal menu a discesa selezione. Immettere https://dgss.microsoft.com nella casella di testo.
Fare clic su Registra
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
Individuare la voce Consenti flussi client pubblici nella sezione Impostazioni avanzate. Impostare questo valore su Sì
Fare clic su Salva nella parte superiore della pagina
Nel menu a sinistra selezionare Autorizzazioni API
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 del tenant. Chiudere la scheda del browser e quindi eseguire di nuovo la ricerca.
- Selezionare Windows Store per le aziende e quindi selezionare Autorizzazioni delegate. Controllare user_impersonation.
- 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 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 del tenant. Chiudere la scheda del browser e 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. Questa operazione è necessaria 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à entro un giorno e l'app dovrà essere riassegnata.
- 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
Ecco alcuni errori comuni che potrebbero 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.