Creazione e utilizzo di certificati digitali con Azure Key Vault

La gestione sicura delle chiavi di cifratura è un aspetto fondamentale della protezione dei dati nel cloud. Con Azure Key Vault è possibile creare, importare e gestire certificati digitali X.509 e successivamente distribuirli e utilizzarli per rendere più sicure le nostre applicazioni.

Il servizio di gestione dei certificati di Azure Key Vault permette di poter effettuare diverse operazioni:

  • Creazione di un certificato self-signed
  • Creazione di un certificato con un’autorità di certificazione partner di Azure Key Vault
  • Creazione di un certificato con un’autorità di certificazione non partner di Azure Key Vault
  • Importazione di un certificato

Creazione di un Azure Key Vault

Per creare un Azure Key Vault è sufficiente effettuare una ricerca nel portale di Azure ed effettuare la creazione di una nuova risorsa.

Figura 1: Risorsa Key Vault del portale di Azure

Procedete alla creazione della risorsa inserendo la sottoscrizione, il resource group, la region ed il key vault name. Azure Key Vault viene offerto in base a due livelli: Standard e Premium. Alla pagina https://azure.microsoft.com/it-it/pricing/details/key-vault/ trovate maggiori informazioni relative ai prezzi e alle differenze tra i diversi modelli.

Figura 2: Creazione dell’Azure Key Vault

Nella pagina delle Access Policy è possibile definire quali servizi potranno accedere ad Azure Key Vault e quali utenti. La modifica di queste informazioni può essere effettuata dopo la creazione del vault.

Figura 3: Access Policy di Azure Key Vault

È possibile decidere se la connessione ad Azure Key Vault deve avvenire da qualsiasi indirizzo oppure deve essere consentita soltanto da alcune reti.

Figura 4: Scelta delle reti da cui sarà possibile accedere ad Azure Key Vault

Figura 5: Configurazione di Azure Key Vault completata

La creazione di Azure Key Vault dura pochi secondi. Dal portale di Azure è possibile visualizzare le informazioni principali relative al vault creato.

Figura 6: Overview di Azure Key Vault

Creazione di un certificato self-signed

Per creare un certificato self-signed cliccate sul nodo Certificate e fate clic su Generate/Import. Verrà creata una coppia di chiavi (pubblica e privata) che verrà associata a un certificato. Il certificato viene firmato dalla propria chiave.

Figura 7: Nodo certificati gestiti da Azure Key Vault

Scegliete un nome per il certificato e scegliete il tipo di Certification Authority da utilizzare. In questo caso utilizzate Self-signed certificate. Procedete quindi a definire il Common Name del certificato e gli eventuali DNS Name se volete creare un certificato di tipo SAN. I certificati SAN (Subject Alternative Names) sono validi per più di un dominio e per nomi diversi.

Figura 8: Creazione del certificato self-signed in Azure Key Vault

Scegliete la durata del certificato e dal nodo Advanced Policy Configuration completate con le informazioni richieste.

Figura 9: Advanced Policy Configuration del certificato self-signed

Verificate le informazioni inserite e fate clic su Create per generare il nuovo certificato self-signed.

Figura 10: Il certificato è pronto per essere creato

Nel giro di pochi secondi il certificato verrà creato e sarà visibile nel ramo Certificates di Azure Key Vault.

Figura 11: Il certificato creato è visibile nel ramo Certificates di Azure Key Vault

Cliccando sul certificato ne potrete visualizzare le proprietà e sarà possibile scaricare sia la chiave privata che la chiave pubblica.

Figura 12: Proprietà del certificato self-signed

Creazione di un certificato con una CA partner di Key Vault

Grazie ad una partnership di Microsoft con GlobalSign e Digicert, è possibile richiedere dei certificati direttamente a queste due Certification Authority pubbliche e i certificati emessi verranno conservati nell’Azure Key Vault. Questa collaborazione permette di semplificare enormemente il processo di creazione e rinnovo dei certificati. Con Azure Key Vault è possibile creare certificati SSL OV (Organization Validation) oppure EV (Extended Validation).

Nella figura sotto è mostrato il processo di creazione del certificato.

Figura 13: Richiesta del certificato ad una CA pubblica

Come prima operazione è necessario aggiungere una Certification Authority ad Azure Key Vault. Cliccate sul pulsante Certificate Authorities nel nodo Certificates di Azure Key Vault ed inserite le credenziali per accedere al vostro account Digicert o GLobalSign. Ovviamente dovete già possedere un vostro account e inserire le informazioni richieste per il Provider che state utilizzando.

Figura 14: Aggiunta delle proprie credenziali per accedere alla CA pubblica

Figura 15: Aggiunta della CA pubblica ad Azure Key Vault completata

La richiesta di un certificato emesso da una CA pubblica partner viene effettuato con la stessa modalità del certificato auto firmato. Cliccate sul pulsante Generate/Import nel nodo Certificate di Azure Key Vault, scegliete un nome per il certificato e scegliete come tipo di Certification Authority da utilizzare la voce Certificate issued by an integrated CA dal menu a tendina. Configurate tutti i parametri richiesti, come mostrato nella figura sotto:

Figura 16: Richiesta di un nuovo certificato da far emettere ad una CA pubblica

Dopo pochi minuti il certificato verrà emesso dalla CA. La creazione del certificato è un processo asincrono. Questa operazione crea una richiesta di certificato per Key Vault e restituisce il codice di stato http 202 (accettato). Lo stato della richiesta può essere monitorato eseguendo il polling dell’oggetto in sospeso creato all’operazione. Nell’intestazione LOCATION viene restituito l’URI completo dell’oggetto in sospeso.

Quando viene completata una richiesta per creare un certificato per Key Vault lo stato dell’oggetto in sospeso cambia da “in progress” in “completed” e viene creata una nuova versione del certificato per Key Vault. che diventa la versione corrente.

Importazione di un certificato esistente in Azure Key Vault

È possibile importare un certificato PFX o PEM in Azure Key Vault, a patto di possederne la chiave privata. Cliccate sul pulsante Generate/Import nel nodo Certificate di Azure Key Vault e scegliete come metodo di creazione del certificato la voce Import dal menu a tendina. Date un nome al certificato, caricatelo in Azure Key Vault e inserite la password per accedere alla chiave privata.

Figura 17: Importazione di un certificato esistente in Azure Key Vault

Il certificato, una volta importao, sarà visibile nel nodo Certificates di Azure Key Vault.

Figura 18: Il certificato importato è visibile nel nodo Certificates di Azure Key Vault.

Distribuire un certificato gestito da Azure Key Vault in una Azure Web App

Creare e utilizzare una Web App in Azure è davvero molto semplice. Questo stesso sito (ICTPower.it) è infatti ospitato in un’applicazione web del cloud di Microsoft. Per poter proteggere le informazioni che viaggiano in Internet è necessario proteggere le connessioni con SSL/TLS ed utilizzare un certificato digitale.

Come si può vedere dalla figura sotto, ho una Azure Web App a cui ho aggiunto un mio dominio personalizzato e che adesso voglio proteggere con un certificato digitale per poter abilitare la navigazione protetta con il protocollo HTTPS.

Figura 19: Domini personalizzati aggiunti alla Azure Web App

Nel nodo TLS/SSL settings della mia Azure Web App non sono presenti certificati digitali. Il mio obiettivo è quello di utilizzare un certificato digitale che si trova in Azure Key Vault.

Figura 20: Nella Azure Web App non sono presenti certificati digitali

Per poter accedere ai certificati digitali conservati in Azure Key Vault è necessario abilitare il Web App Resource Provider ad accedere al Vault. Per poterlo fare è sufficiente lanciare, utilizzando Azure Cloud Shell, il comando

 

Questo comando modificherà la Access Policy del Vault. Il ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd è identico per tutte le sottoscrizioni.


Figura 21: Modifica della Access Policy di Azure Key Vault per permettere alle Azure Web App di accedere ai certificati

Figura 22: Le Azure Web App possono adesso accedere all’Azure Key Vault per leggere i certificati

Installazione del certificato di Azure Key Vault nella Azure Web App

Per poter installare ed associare il certificato alla Azure Web App è sufficiente collegarsi alla pagina https://github.com/Azure/azure-quickstart-templates/tree/master/201-web-app-certificate-from-key-vault/ ed utilizzare il template disponibile.

Questo template permette di distribuire in maniera rapida il certificato e permette di associarlo al nome personalizzato della Azure Web App. Per approfondimenti sull’utilizzo degli Azure Template vi rimando alla lettura del mio articolo https://www.ictpower.it/guide/azure-resource-manager-templates-deployment-con-un-clic.htm

Lanciate l’esecuzione del template e nel portale di Azure inserite le informazioni richieste, come mostrato nella figura sotto:

Figura 23: Template per la distribuzione del certificato di Azure Key Vault in una Azure Web App

Se vi collegate al nodo TLS/SSL setting della vostra Azure Web App vedrete che il certificato sarà stato distribuito ed associato al dominio personalizzato che avete indicato e che era contenuto nel certificato.

Figura 24: Il certificato è visibile nella Azure Web App

Figura 25: Il certificato è stato associato al dominio personalizzato della Web App

Adesso la vostra Web App è navigabile in HTTPS.

Figura 26: Il sito web ospitato dalla Azure Web App è navigabile in maniera sicura

Conclusioni

La gestione dei certificati con Azure Key Vault è estremamente semplice ed offre un livello di sicurezza notevolissimo. È possibile creare certificati auto-firmati, creare certificati utilizzando delle Certification Authority pubbliche oppure importare certificati precedentemente creati. Permettere l’accesso alle applicazioni diventa poi davvero semplice.