Firmare i pacchetti con Azure Key Vault

In Visual Studio 2022 versione 17.8 Preview 2 e successive è possibile firmare pacchetti di app UWP e desktop con un certificato di Azure Key Vault. Questo strumento invia il digest del pacchetto dell'app (hash) ad Azure Key Vault per la firma crittografica con il certificato scelto. Il digest firmato viene quindi restituito e collegato al pacchetto in locale.

Importante

Questo processo è sicuro. La chiave privata del certificato non lascia mai Azure Key Vault.

Prerequisiti

  • Un account Azure. Se non è ancora disponibile alcun account di Azure, iniziare da qui.
  • Un insieme di credenziali delle chiavi di Azure. Per altre informazioni, vedere Creare un insieme di credenziali delle chiavi.
  • Un certificato di firma del pacchetto valido importato in Azure Key Vault. Il certificato predefinito generato da Azure Key Vault non potrà essere usato per la firma del codice. Per informazioni dettagliate su come creare un certificato per la firma dei pacchetti, vedere Creare un certificato per la firma dei pacchetti.

Importare un certificato nell'insieme di credenziali delle chiavi

L'aggiunta di un certificato nell'insieme di credenziali delle chiavi è un'operazione molto semplice. In questo esempio viene aggiunto un certificato valido per la firma del codice UWP denominato UwpSigningCert.pfx.

  1. Nella pagina delle proprietà dell'insieme di credenziali delle chiavi selezionare Certificati.
  2. Fare clic su Genera/Importa.
  3. Nella schermata Crea un certificato scegliere i valori seguenti:
    • Metodo di creazione del certificato: Importazione
    • Nome certificato: UwpSigningCert
    • Carica file di certificato: UwpSigningCert.pfx
    • Decrittografa certificato: se il certificato è protetto da password, specificarlo nel campo Password .
  4. Fai clic su Crea.

Nota

Questo certificato firmato automaticamente non sarà ritenuto attendibile da Windows a meno che non sia stato importato e considerato attendibile da un amministratore. Proteggere tutti i certificati, inclusi quelli firmati automaticamente.

Configurare i criteri di accesso per l'insieme di credenziali delle chiavi

È possibile controllare gli accessi ai contenuti dell'insieme di credenziali delle chiavi usando criteri di accesso. I criteri di accesso per l'insieme di credenziali delle chiavi prevedono che le autorizzazioni vengano concesse separatamente a chiavi, segreti e certificati. È possibile concedere a un utente solo l'accesso alle chiavi e non ai segreti. Le autorizzazioni di accesso alle chiavi, ai segreti e ai certificati sono gestite a livello dell'insieme di credenziali. Per altre informazioni, vedere Sicurezza in Azure Key Vault.

Nota

Quando si crea un insieme di credenziali delle chiavi in una sottoscrizione di Azure, tale insieme di credenziali viene automaticamente associato al tenant di Azure Active Directory della sottoscrizione. Chiunque tenti di gestire o recuperare il contenuto di un insieme di credenziali delle chiavi deve essere autenticato da Azure AD.

  1. Nella pagina delle proprietà dell'insieme di credenziali delle chiavi selezionare Criteri di accesso.
  2. Selezionare + Aggiungi un criterio di accesso.
  3. Fare clic sull'elenco a discesa Autorizzazioni certificato e selezionare le caselle Recupera ed Elenco in Operazioni di gestione certificati.
  4. Fare clic sull'elenco a discesa Autorizzazioni segrete e selezionare le caselle Recuperaed Elenco in Operazioni di gestione dei segreti.
  5. Fare clic su Seleziona entità, cercare l'utente a cui si concede l'accesso e fare clic su Seleziona.
  6. Fare clic su Aggiungi.
  7. Verificare di aver salvato le modifiche facendo clic su Salva.

Nota

Non è consigliabile concedere agli utenti l'accesso diretto a un insieme di credenziali delle chiavi. È preferibile aggiungere gli utenti in un gruppo di Azure AD e concedere l'accesso all'insieme di credenziali delle chiavi a tale gruppo.

Selezionare un certificato dell'insieme di credenziali delle chiavi in Visual Studio

La procedura guidata Creare pacchetti dell'app disponibile in Visual Studio consente di scegliere il certificato da utilizzare per la firma del pacchetto dell'app. È possibile scegliere il certificato di firma del pacchetto tramite Azure Key Vault. È necessario fornire l'URI dell'insieme di credenziali delle chiavi contenente il certificato. Inoltre, l'account Microsoft autenticato in Visual Studio deve disporre delle autorizzazioni corrette per accedervi.

  1. Aprire il progetto dell'applicazione UWP o il progetto di creazione pacchetti di applicazioni Windows per desktop in Visual Studio.
  2. Selezionare Pubblica ->Pacchetto ->Crea pacchetti di app per aprire la procedura guidata Crea pacchetti app.
  3. Nella pagina Seleziona il metodo di distribuzione selezionare Sideload.
  4. Nella pagina Seleziona il metodo di firma fare clic su Select from Azure Key Vault... (Seleziona da Azure Key Vault...).
  5. Quando verrà visualizzata la finestra di dialogo Seleziona un certificato da Azure Key Vault, usare la selezione account per scegliere l'account per cui è stato configurato un criterio di accesso.
  6. Immettere l'URI dell'insieme di credenziali delle chiavi. L'URI è riportato nella pagina Panoramica dell'insieme di credenziali delle chiavi ed è identificato dal nome DNS.
  7. Fare clic sul pulsante Visualizza metadati.
  8. Al completamento del caricamento dei certificati, selezionare quello desiderato dall'elenco (ad esempio UwpSigningCert).
  9. Fare clic su OK.

Decrittografare il certificato con una password di Azure Key Vault

Se si usa un certificato protetto da password locale (con estensione pfx) per firmare il pacchetto dell'app, potrebbe essere difficile gestire la password usata per decrittografare il certificato. Quando si importa il certificato durante la procedura guidata Crea pacchetti dell'app, verrà chiesto di immettere la password manualmente. In alternativa, è possibile scegliere la password ottenuta da Azure Key Vault.

  1. Aprire il progetto dell'applicazione UWP o il progetto di creazione pacchetti di applicazioni Windows per desktop in Visual Studio.
  2. Selezionare Pubblica ->Pacchetto ->Crea pacchetti di app per aprire la procedura guidata Crea pacchetti app.
  3. Nella pagina Seleziona il metodo di distribuzione selezionare Sideload.
  4. Nella pagina Seleziona il metodo di firma fare clic su Seleziona da file....
  5. Nella finestra di dialogo Certificate is password protected (Il certificato è protetto da password) che verrà quindi visualizzata fare clic su Seleziona password da Key Vault.
  6. Quando verrà visualizzata la finestra di dialogo Select a password from Azure Key Vault (Seleziona una password da Azure Key Vault), usare la selezione account per scegliere l'account per cui è stato configurato un criterio di accesso.
  7. Immettere l'URI dell'insieme di credenziali delle chiavi. L'URI è riportato nella pagina Panoramica dell'insieme di credenziali delle chiavi ed è identificato dal nome DNS.
  8. Fare clic sul pulsante Visualizza metadati.
  9. Al completamento del caricamento delle password, selezionare quella desiderata dall'elenco (ad esempio UwpSigningCertPassword).
  10. Fare clic su OK.

Abilitare l'accesso in scenari CI/CD

Per abilitare l'accesso negli scenari CI/CD, è necessario configurare la pipeline per l'uso di DefaultAzureCredential per l'autenticazione con Azure Key Vault. DefaultAzureCredential tenterà di usare l'identità dell'agente della pipeline per accedere all'insieme di credenziali delle chiavi, se dispone delle autorizzazioni appropriate. In alternativa, è possibile specificare un'entità servizio o un'identità gestita da usare per l'autenticazione.