Firmare i pacchetti con Azure Key VaultSign packages with Azure Key Vault

In Visual Studio 2019 versione 16.6 Preview 3 e versioni successive, per gli scenari di sviluppo e test è possibile firmare i pacchetti delle app UWP e desktop con un certificato archiviato in Azure Key Vault.In Visual Studio 2019 version 16.6 Preview 3 and later versions, you can sign UWP and desktop app packages with a certificate stored in Azure Key Vault for development and test scenarios. Questo strumento estrae le chiavi pubbliche e private da Azure Key Vault e le carica nell'archivio dei certificati disponibile nel computer di sviluppo in modo da firmare il pacchetto tramite SignTool.exe.This tool extracts your public and private keys from your Azure Key Vault and loads them in the certificate store on your development computer in order to sign your package with SignTool.exe.

Importante

Il processo descritto in questo articolo è valido solo per scenari di sviluppo e test.The process described in this article is intended for development and test scenarios only. Non rappresenta una procedura consigliata per le chiavi private usate per la distribuzione.This process is not considered best practice for your private keys used for distribution. In base alle migliori procedure consigliate per la sicurezza, le chiavi private usate per la distribuzione devono essere gestite solo tramite gli strumenti consigliati dalla piattaforma di integrazione continua e distribuzione continua (CI/CD).To ensure best security practices, your private keys for distribution should be handled only by the tooling recommended by your Continuous Integration and Continuous Deployment (CI/CD) platform.

PrerequisitiPrerequisites

  • Un account di Azure.An Azure account. Se non è ancora disponibile alcun account di Azure, iniziare da qui.If you do not already have an Azure account, start here.
  • Un insieme di credenziali delle chiavi di Azure.An Azure Key Vault. Per altre informazioni, vedere Creare un insieme di credenziali delle chiavi.For more info, see Create a Key Vault.
  • Un certificato di firma del pacchetto valido importato in Azure Key Vault.A valid package signing certificate imported into Azure Key Vault. Il certificato predefinito generato da Azure Key Vault non potrà essere usato per la firma del codice.The default certificate generated by Azure Key Vault will not work for code signing. Per informazioni dettagliate su come creare un certificato per la firma dei pacchetti, vedere Creare un certificato per la firma dei pacchetti.For details on how to create a package signing certificate, see Create a certificate for package signing.

Importare un certificato nell'insieme di credenziali delle chiaviImport a certificate to your Key Vault

L'aggiunta di un certificato nell'insieme di credenziali delle chiavi è un'operazione molto semplice.Adding a certificate to your Key Vault is very simple. In questo esempio viene aggiunto un certificato valido per la firma del codice UWP denominato UwpSigningCert.pfx.In this example, we add a valid UWP code signing certificate called UwpSigningCert.pfx.

  1. Nella pagina delle proprietà dell'insieme di credenziali delle chiavi selezionare Certificati.On the Key Vault properties pages, select Certificates.
  2. Fare clic su Genera/Importa.Click on Generate/Import.
  3. Nella schermata che consente di creare un certificato scegliere i seguenti valori:On the Create a certificate screen, choose the following values:
    • Metodo di creazione del certificato: ImportareMethod of Certificate Creation: Import
    • Nome certificato: UwpSigningCertCertificate Name: UwpSigningCert
    • Carica il file di certificato: UwpSigningCert.pfxUpload Certificate File: UwpSigningCert.pfx
    • Decrypt Certificate (Esegui decrittografia certificato): Se il certificato è protetto da password, compilare il campo Password.Decrypt Certificate: If your certificate is password-protected, provide it in the Password field.
  4. Fare clic su Crea.Click Create.

Nota

Questo certificato firmato automaticamente non sarà ritenuto attendibile da Windows a meno che non sia stato importato e considerato attendibile da un amministratore.This self-signed certificate will not be trusted by Windows unless it has been imported and trusted by an administrator. Proteggere tutti i certificati, inclusi quelli firmati automaticamente.Keep all of your certificates secure including self-signed certificates.

Configurare i criteri di accesso per l'insieme di credenziali delle chiaviConfigure the access policies for your Key Vault

È possibile controllare gli accessi ai contenuti dell'insieme di credenziali delle chiavi usando criteri di accesso.You can control who has access to the contents of your Key Vault by using access policies. I criteri di accesso per l'insieme di credenziali delle chiavi prevedono che le autorizzazioni vengano concesse separatamente a chiavi, segreti e certificati.Key Vault access policies grant permissions separately to keys, secrets, and certificates. È possibile concedere a un utente solo l'accesso alle chiavi e non ai segreti.You can grant a user access only to keys and not to secrets. Le autorizzazioni di accesso alle chiavi, ai segreti e ai certificati sono gestite a livello dell'insieme di credenziali.Access permissions for keys, secrets, and certificates are managed at the vault level. Per altre informazioni, vedere Sicurezza in Azure Key Vault.For more information, see Azure Key Vault security.

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.When you create a Key Vault in an Azure subscription, it is automatically associated with the Azure Active Directory tenant of the subscription. Chiunque tenti di gestire o recuperare il contenuto di un insieme di credenziali delle chiavi deve essere autenticato da Azure AD.Anyone trying to manage or retrieve content from a Key Vault must be authenticated by Azure AD.

  1. Nella pagina delle proprietà dell'insieme di credenziali delle chiavi selezionare Criteri di accesso.On the Key Vault properties pages, select Access policies.
  2. Selezionare + Aggiungi un criterio di accesso.Select + Add Access Policy.
  3. Fare clic sull'elenco a discesa Autorizzazioni chiave e selezionare le caselle Ottenere ed Elenco in Operazioni di gestione delle chiavi.Click on the Key permissions dropdown and check the boxes for Get and List under Key Management Operations.
  4. Fare clic su Selezionare un'entità, cercare l'utente a cui si desidera concedere l'accesso e fare clic su Seleziona.Click on Select principal, search for the user you are granting access to, and click Select.
  5. Fare clic su Aggiungi.Click Add.
  6. Verificare di aver salvato le modifiche facendo clic su Salva.Make sure to save your changes by clicking Save.

Nota

Non è consigliabile concedere agli utenti l'accesso diretto a un insieme di credenziali delle chiavi.Giving users direct access to a key vault is discouraged. È preferibile aggiungere gli utenti in un gruppo di Azure AD e concedere l'accesso all'insieme di credenziali delle chiavi a tale gruppo.Ideally, users should be added to an Azure AD group, which is in turn given access to the key vault.

Selezionare un certificato dell'insieme di credenziali delle chiavi in Visual StudioSelect a certificate from your Key Vault 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.The Create App Packages wizard in Visual Studio enables you to choose the certificate that will be used to sign your app package. È possibile scegliere il certificato di firma del pacchetto tramite Azure Key Vault.You can choose the package signing certificate via 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.You must provide the URI of the Key Vault that contains the certificate, and your Microsoft account authenticated in Visual Studio must have the correct permissions to access it.

  1. Aprire il progetto dell'applicazione UWP o il progetto di creazione pacchetti di applicazioni Windows per desktop in Visual Studio.Open your UWP application project or desktop Windows application packaging project in Visual Studio.
  2. Selezionare Pubblica -> Pacchetto -> Crea pacchetti dell'app per aprire la procedura guidata Crea pacchetti dell'app.Select Publish -> Package -> Create app packages... to open the Create App Packages wizard.
  3. Nella pagina Seleziona il metodo di distribuzione selezionare Sideload.On the Select distribution method page, select Sideloading.
  4. Nella pagina Seleziona il metodo di firma fare clic su Select from Azure Key Vault... (Seleziona da Azure Key Vault...).On the Select signing method page, click Select from 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.After the Select a certificate from Azure Key Vault dialog appears, use the account picker to choose the account for which you have configured an access policy.
  6. Immettere l'URI dell'insieme di credenziali delle chiavi.Enter the URI of the Key Vault. L'URI è riportato nella pagina Panoramica dell'insieme di credenziali delle chiavi ed è identificato dal nome DNS.The URI can be found on the Overview page of the Key Vault and is identified by DNS Name.
  7. Fare clic sul pulsante Visualizza metadati.Click the View Metadata button.
  8. Al completamento del caricamento dei certificati, selezionare quello desiderato dall'elenco (ad esempio UwpSigningCert).After the certificates have finished loading, select the one you want from the list (for example, UwpSigningCert).
  9. Fare clic su OK.Click OK.

Nota

Il certificato verrà importato nell'archivio dei certificati locale, in cui verrà usato per la firma dei pacchetti.The certificate will be imported to your local certificate store where it will be used for package signing.

Decrittografare il certificato con una password di Azure Key VaultDecrypt your certificate with a password from 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.If you are using a local password-protected certificate (.pfx) to sign your app package, it can be difficult to manage the password used to decrypt it. Quando si importa il certificato durante la procedura guidata Crea pacchetti dell'app, verrà chiesto di immettere la password manualmente.When you are importing the certificate in the Create App Packages wizard, you will be prompted to manually enter the password. In alternativa, è possibile scegliere la password ottenuta da Azure Key Vault.Alternatively, there is an option to choose the password from Azure Key Vault.

  1. Aprire il progetto dell'applicazione UWP o il progetto di creazione pacchetti di applicazioni Windows per desktop in Visual Studio.Open your UWP application project or desktop Windows application packaging project in Visual Studio.
  2. Selezionare Pubblica -> Pacchetto -> Crea pacchetti dell'app per aprire la procedura guidata Crea pacchetti dell'app.Select Publish -> Package -> Create app packages... to open the Create App Packages wizard.
  3. Nella pagina Seleziona il metodo di distribuzione selezionare Sideload.On the Select distribution method page, select Sideloading.
  4. Nella pagina Seleziona il metodo di firma fare clic su Seleziona da file... .On the Select signing method page, click Select From 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.After the Certificate is password protected dialog appears, click Select Password From 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.After the Select a password from Azure Key Vault dialog appears, use the account picker to choose the account for which you have configured an access policy.
  7. Immettere l'URI dell'insieme di credenziali delle chiavi.Enter the URI of the Key Vault. L'URI è riportato nella pagina Panoramica dell'insieme di credenziali delle chiavi ed è identificato dal nome DNS.The URI can be found on the Overview page of the Key Vault and is identified by DNS Name.
  8. Fare clic sul pulsante Visualizza metadati.Click the View Metadata button.
  9. Al completamento del caricamento delle password, selezionare quella desiderata dall'elenco (ad esempio UwpSigningCertPassword).After the passwords have finished loading, select the one you want from the list (for example, UwpSigningCertPassword).
  10. Fare clic su OK.Click OK.