Aggiungere un certificato TLS/SSL nel Servizio app di Azure

Servizio app di Azure offre un servizio di hosting Web con scalabilità elevata e funzioni di auto-correzione. Questo articolo illustra come creare, caricare o importare un certificato privato o un certificato pubblico nel servizio app.

Dopo aver aggiunto il certificato all'app del servizio app o all'app per le funzioni, è possibile proteggere un nome DNS personalizzato con tale certificato o usarlo nel codice dell'applicazione.

Nota

Un certificato caricato in un'app viene archiviato in un'unità di distribuzione associata alla combinazione di gruppo di risorse e area dell'app (internamente denominata spazio Web). In questo modo il certificato viene reso accessibile ad altre app nella stessa combinazione di gruppo di risorse e area.

La tabella seguente elenca le opzioni disponibili per aggiungere certificati nel servizio app:

Opzione Descrizione
Creare un certificato gratuito gestito dal servizio app (anteprima) Un certificato privato gratuito e facile da usare se è sufficiente proteggere il dominio personalizzato nel servizio app.
Acquistare un certificato del servizio app Un certificato privato gestito da Azure. Combina la semplicità della gestione automatica dei certificati e la flessibilità delle opzioni di rinnovo ed esportazione.
Importare un certificato da Key Vault Utile se si usa Azure Key Vault per gestire i certificati PKCS12. Vedere Requisiti dei certificati privati.
Caricare un certificato privato Se si ha già un certificato privato rilasciato da un provider di terze parti, è possibile caricarlo. Vedere Requisiti dei certificati privati.
Caricare un certificato pubblico I certificati pubblici non vengono usati per proteggere i domini personalizzati, ma è possibile caricarli nel codice se sono necessari per accedere a risorse remote.

Prerequisiti

Requisiti dei certificati privati

Il certificato gestito del servizio app gratuito e il certificato del servizio app soddisfano già i requisiti del servizio app. Se si sceglie di caricare o importare un certificato privato nel servizio app, il certificato deve soddisfare i requisiti seguenti:

  • Esportato come file PFX protetto da password,crittografato con triple DES.
  • Deve contenere una chiave privata costituita da almeno 2048 bit
  • Deve contenere tutti i certificati intermedi nella catena di certificati.

Per proteggere un dominio personalizzato in un'associazione TLS/SSL, il certificato presenta requisiti aggiuntivi:

  • Contiene un'estensione di utilizzo chiavi avanzato per l'autenticazione server (OID = 1.3.6.1.5.5.7.3.1)
  • Deve essere firmato da un'autorità di certificazione attendibile

Nota

Sebbene non siano descritti in questo articolo, i certificati di crittografia a curva ellittica (ECC) possono essere usati con il servizio app. Per informazioni sulla procedura per creare i certificati ECC, rivolgersi all'autorità di certificazione.

Preparare l'app Web

Per creare binding TLS/SSL personalizzati o abilitare i certificati client per l'app del servizio app, il livello del piano di servizio app deve essere Basic, Standard, Premium o Isolato. In questo passaggio si verifica che l'app Web sia supportata dal piano tariffario adeguato.

Accedere ad Azure

Aprire il portale di Azure.

Cercare e selezionare Servizi app.

Selezionare Servizi app

Nella pagina Servizi app selezionare il nome dell'app Web.

Screenshot della pagina Servizi app nel portale di Azure che mostra un elenco di tutte le app Web in esecuzione, con la prima app evidenziata.

Viene visualizzata la pagina di gestione dell'app Web.

Scegliere il piano tariffario

Nel riquadro di spostamento a sinistra della pagina dell'app Web scorrere fino alla sezione Impostazioni e selezionare Scala verticalmente (piano di servizio app) .

Menu di scalabilità verticale

Verificare che l'app Web non sia inclusa nel livello F1 o D1. Il livello corrente dell'app Web è evidenziato da una casella blu scuro.

Controllare il piano tariffario

Il certificato SSL personalizzato non è supportato nel livello F1 o D1. Se è necessario passare a un livello superiore, seguire la procedura della sezione successiva. Altrimenti, chiudere la pagina Aumenta e ignorare la sezione Passare a un piano di servizio app superiore sezione.

Passare a un piano di servizio app superiore

Selezionare uno dei livelli non gratuiti (B1, B2, B3 o uno qualsiasi dei livelli della categoria Produzione). Per altre opzioni, fare clic su Visualizza opzioni aggiuntive.

Fare clic su Apply.

Scegliere un piano tariffario

La visualizzazione della notifica seguente indica che l'operazione di passaggio al livello superiore è stata completata.

Notifica di passaggio al livello superiore

Creare un certificato gestito gratuito (anteprima)

Nota

Prima di creare un certificato gestito gratuito, assicurarsi di aver soddisfatto i prerequisiti per l'app.

Il certificato gratuito gestito dal servizio app è una soluzione rapida ed efficace per proteggere il proprio nome DNS personalizzato nel servizio app. Si tratta di un certificato TLS/SSL completamente funzionante che viene gestito dal servizio app e rinnovato automaticamente. Il certificato gratuito presenta le limitazioni seguenti:

  • Non supporta i certificati con caratteri jolly e non deve essere utilizzato come certificato client.
  • Non è esportabile.
  • Non è supportato in ambiente del servizio app (ASE).
  • Non è supportato con i domini radice integrati con Gestione traffico.

Nota

Il certificato gratuito viene rilasciato da DigiCert. Per alcuni domini di primo livello, è necessario consentire in modo esplicito a DigiCert di agire come autorità di certificazione creando un record di dominio CAA con il valore seguente: 0 issue digicert.com.

Nel menu a sinistra del portale di Azure scegliere Servizi app > <app-name> .

Nel riquadro di spostamento a sinistra dell'app selezionare Impostazioni TLS/SSL > Certificati a chiave privata (.pfx) > Crea certificato gestito dal servizio app.

Creare il certificato gratuito nel servizio app

Selezionare il dominio personalizzato per il quale creare un certificato gratuito e scegliere Crea. È possibile creare un solo certificato per ogni dominio personalizzato supportato.

Al termine dell'operazione, il certificato viene visualizzato nell'elenco Certificati a chiave privata.

Creazione del certificato gratuito completata

Importante

Per proteggere un dominio personalizzato con questo certificato, è necessario anche creare un'associazione di certificato. Seguire la procedura descritta in Creare l'associazione.

Importare un certificato del servizio app

Se si acquista un certificato del servizio app da Azure, Azure gestisce le attività seguenti:

  • Si occupa del processo di acquisto da GoDaddy.
  • Esegue la verifica del dominio del certificato.
  • Gestisce il certificato in Azure Key Vault.
  • Gestisce il rinnovo del certificato (vedere Rinnovare il certificato).
  • Sincronizza automaticamente il certificato con le copie importate nelle app del servizio app.

Per acquistare un certificato del servizio app, passare ad Avvio dell'ordine del certificato.

Se si ha già un certificato del servizio app funzionante, è possibile:

Nota

Al momento i certificati del servizio app non sono supportati nei cloud nazionali di Azure.

Avvio dell'ordine del certificato

Avviare un ordine di un certificato del servizio app nella pagina di creazione del certificato del servizio app.

Avviare l'acquisto del certificato del servizio app

Usare la tabella seguente per informazioni sulla configurazione del certificato. Al termine, fare clic su Crea.

Impostazione Descrizione
Nome Nome descrittivo per il certificato del servizio app.
Nome host di dominio di tipo naked Specificare qui il dominio radice. Il certificato emesso protegge sia il dominio radice sia il sottodominio www. Nel certificato emesso, il campo relativo al nome comune contiene il dominio radice e quello relativo al nome alternativo del soggetto contiene il dominio www. Per proteggere solo un sottodominio, specificare qui il nome di dominio completo del sottodominio, ad esempio mysubdomain.contoso.com.
Subscription Sottoscrizione che conterrà il certificato.
Resource group Gruppo di risorse che conterrà il certificato. È possibile usare un nuovo gruppo di risorse o selezionare lo stesso gruppo di risorse, ad esempio, dell'app del servizio app.
Certificato SKU Determina il tipo di certificato da creare, se si tratta di un certificato standard o di un certificato con caratteri jolly.
Note legali Fare clic per confermare che si accettano le condizioni legali. I certificati vengono ottenuti da GoDaddy.

Nota

I certificati del servizio app acquistati da Azure vengono rilasciati da GoDaddy. Per alcuni domini di primo livello, è necessario consentire in modo esplicito a GoDaddy di agire come autorità di certificazione creando un record di dominio CAA con il valore seguente: 0 issue godaddy.com

Archiviare il certificato in Azure Key Vault

Al termine del processo di acquisto del certificato, è necessario completare alcuni passaggi aggiuntivi prima di potere iniziare a usarlo.

Selezionare il certificato nella pagina Certificati del servizio app e quindi fare clic su Configurazione certificato > Passaggio 1: archiviare.

Configurare l'archiviazione Key Vault del certificato del servizio app

Il Key Vault è un servizio di Azure che consente di proteggere le chiavi e i segreti di crittografia usati da servizi e applicazioni cloud. È l'archiviazione scelta per i certificati del servizio app.

Nella pagina Stato insieme di credenziali delle chiavi fare clic su Repository dell'insieme di credenziali delle chiavi per creare un nuovo insieme di credenziali o sceglierne uno esistente. Se si sceglie di creare un nuovo insieme di credenziali, usare la tabella seguente per configurarlo e quindi fare clic su Crea. Creare il nuovo insieme di credenziali delle chiavi nella stessa sottoscrizione e nello stesso gruppo di risorse dell'app del servizio app.

Impostazione Descrizione
Nome Nome univoco costituito da caratteri alfanumerici e trattini.
Resource group È consigliabile selezionare lo stesso gruppo di risorse del certificato del servizio app.
Location Selezionare la stessa località dell'app del servizio app.
Piano tariffario Per altre informazioni, vedere Prezzi di Azure Key Vault.
Criteri di accesso Definisce le applicazioni e l'accesso consentito alle risorse dell'insieme di credenziali. È possibile configurare questi elementi in un secondo momento, seguendo la procedura descritta in Assegnare criteri di accesso Key Vault.
Accesso alla rete virtuale Limitare l'accesso all'insieme di credenziali a determinate reti virtuali di Azure. È possibile configurare questa impostazione in un secondo momento, seguendo i passaggi descritti in Configurare reti virtuali e firewall di Azure Key Vault

Dopo aver selezionato l'insieme di credenziali, chiudere la pagina Repository dell'insieme di credenziali delle chiavi. L'opzione Passaggio 1: archiviare dovrebbe mostrare un segno di spunta verde, a indicare che l'operazione è riuscita. Mantenere aperta la pagina per proseguire con il passaggio successivo.

Verificare la proprietà del dominio

Nella stessa pagina Configurazione certificato usata nell'ultimo passaggio fare clic su Passaggio 2: verificare.

Verificare il dominio per il certificato del servizio app

Selezionare Verifica del servizio app. Poiché è già stato eseguito il mapping del dominio all'app Web (vedere Prerequisiti), è già stato verificato. Fare semplicemente clic su Verifica per completare questo passaggio. Fare clic sul pulsante Aggiorna finché non viene visualizzato il messaggio Il dominio del certificato è stato verificato.

Nota

Sono supportati quattro tipi di metodi di verifica del dominio:

  • Servizio app: opzione più pratica quando è già stato eseguito il mapping del dominio a un'app del servizio app nella stessa sottoscrizione. in quanto l'app del servizio app ha già verificato la proprietà del dominio.
  • Dominio: verificare un dominio del servizio app acquistato da Azure. Azure aggiunge automaticamente il record TXT di verifica e completa il processo.
  • Posta: verificare il dominio inviando un messaggio di posta elettronica all'amministratore di dominio. Quando si seleziona questa opzione, vengono fornite istruzioni.
  • Manuale: verificare il dominio usando una pagina HTML (solo per un certificato Standard) o un record TXT DNS. Quando si seleziona questa opzione, vengono fornite istruzioni.

Importare il certificato nel servizio app

Nel menu a sinistra del portale di Azure scegliere Servizi app > <app-name> .

Nel riquadro di spostamento a sinistra dell'app selezionare Impostazioni TLS/SSL > Certificati a chiave privata (.pfx) > Importa il certificato del servizio app.

Importare il certificato nel servizio app

Selezionare il certificato appena acquistato e scegliere OK.

Al termine dell'operazione, il certificato viene visualizzato nell'elenco Certificati a chiave privata.

Importazione del certificato del servizio app completata

Importante

Per proteggere un dominio personalizzato con questo certificato, è necessario anche creare un'associazione di certificato. Seguire la procedura descritta in Creare l'associazione.

Importare un certificato da Key Vault

Se si usa Azure Key Vault per gestire i certificati, è possibile importare un certificato PKCS12 da Key Vault nel servizio app, purché siano soddisfatti i requisiti.

Autorizzare il servizio app per la lettura dall'insieme di credenziali

Per impostazione predefinita, il provider di risorse del servizio app non ha accesso a Key Vault. Per poter usare un Key Vault per la distribuzione di un certificato, è necessario autorizzare il provider di risorse ad accedere in lettura al Key Vault.

abfa0a7c-a6b6-4736-8310-5855508787cd è il nome dell'entità servizio del provider di risorse per il servizio app ed è lo stesso per tutte le sottoscrizioni di Azure. Per l'ambiente cloud di Azure per enti pubblici usare invece 6a02c803-dafd-4136-b4c3-5a6f318b4714 come nome dell'entità servizio del provider di risorse.

Importare un certificato nell'app dall'insieme di credenziali

Nel menu a sinistra del portale di Azure scegliere Servizi app > <app-name> .

Nel riquadro di spostamento a sinistra dell'app selezionare Impostazioni TLS/SSL > Certificati a chiave privata (.pfx) > Importa certificato dell'insieme di credenziali delle chiavi.

Importare il certificato di Key Vault nel servizio app

La tabella seguente contiene informazioni utili per facilitare la selezione del certificato.

Impostazione Descrizione
Subscription La sottoscrizione a cui appartiene l'istanza di Key Vault.
Key Vault L'insieme di credenziali con il certificato da importare.
Certificato Selezionare il certificato dall'elenco di certificati PKCS12 nell'insieme di credenziali. Tutti i certificati PKCS12 nell'insieme di credenziali sono elencati con le relative identificazioni, ma non tutti sono supportati nel servizio app.

Al termine dell'operazione, il certificato viene visualizzato nell'elenco Certificati a chiave privata. Se l'importazione non riesce e viene restituito un errore, significa che il certificato non soddisfa i requisiti per il servizio app.

Importazione del certificato di Key Vault completata

Nota

Se si aggiorna il certificato in Key Vault con un nuovo certificato, il servizio app sincronizza automaticamente il certificato entro 24 ore.

Importante

Per proteggere un dominio personalizzato con questo certificato, è necessario anche creare un'associazione di certificato. Seguire la procedura descritta in Creare l'associazione.

Caricare un certificato privato

Dopo aver ottenuto un certificato dal provider di certificati, seguire i passaggi descritti in questa sezione per prepararlo per il Servizio app.

Unire i certificati intermedi

Se l'autorità di certificazione offre più certificati nella catena di certificati, è necessario unire i certificati nell'ordine.

A tale scopo, aprire ogni certificato ricevuto in un editor di testo.

Creare un file per il certificato unito denominato mergedcertificate.crt. In un editor di testo copiare il contenuto di ogni certificato nel file. L'ordine dei certificati deve corrispondere all'ordine nella catena di certificati, che inizia con il certificato dell'utente e termina con il certificato radice. Sarà simile a quanto indicato nell'esempio seguente:

-----BEGIN CERTIFICATE-----
<your entire Base64 encoded SSL certificate>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 1>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 2>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded root certificate>
-----END CERTIFICATE-----

Esportare il certificato in un file PFX

Esportare il certificato TLS/SSL unito con la chiave privata con cui è stata generata la richiesta del certificato.

Se è stato usato OpenSSL per generare la richiesta del certificato, è stato creato un file di chiave privata. Per esportare il certificato in un file PFX, eseguire il comando seguente. Sostituire i segnaposto <private-key-file> e <merged-certificate-file> con i percorsi della chiave privata e del file di certificato unito.

openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>  

Quando richiesto, definire una password di esportazione. La password verrà usata in seguito durante il caricamento del certificato TLS/SSL nel servizio app.

se è stato usato IIS o Certreq.exe per generare la richiesta di certificato, installare il certificato nel computer locale e quindi esportarlo in un file PFX.

Caricare il certificato nel servizio app

A questo punto si è pronti per caricare il certificato nel Servizio app.

Nel menu a sinistra del portale di Azure scegliere Servizi app > <app-name> .

Nel riquadro di spostamento a sinistra dell'app selezionare Impostazioni TLS/SSL > Certificati a chiave privata (.pfx) > Carica certificato.

Caricare il certificato privato nel servizio app

In File del certificato PFX selezionare il file PFX. In Password certificato digitare la password creata durante l'esportazione del file PFX. Al termine, fare clic su Carica.

Al termine dell'operazione, il certificato viene visualizzato nell'elenco Certificati a chiave privata.

Caricamento del certificato completato

Importante

Per proteggere un dominio personalizzato con questo certificato, è necessario anche creare un'associazione di certificato. Seguire la procedura descritta in Creare l'associazione.

Caricare un certificato pubblico

I certificati pubblici sono supportati nel formato .cer.

Nel menu a sinistra del portale di Azure scegliere Servizi app > <app-name> .

Nel riquadro di spostamento a sinistra dell'app selezionare Impostazioni TLS/SSL > Certificati pubblici (.cer) > Carica certificato a chiave pubblica.

In Nome digitare un nome per il certificato. In File di certificato CER selezionare il file CER.

Fare clic su Carica.

Caricare il certificato pubblico nel servizio app

Dopo aver caricato il certificato, copiare l'identificazione personale del certificato e vedere Rendere accessibile il certificato.

Gestire i certificati del servizio app

Questa sezione illustra come gestire un certificato del servizio app acquistato con la procedura descritta in Importare un certificato del servizio app.

Reimpostare la chiave del certificato

Se si ritiene che la chiave privata del certificato sia compromessa, è possibile reimpostarla. Selezionare il certificato nella pagina Certificati del servizio app e quindi selezionare Reimposta chiavi e sincronizza nel riquadro di spostamento a sinistra.

Fare clic su Reimposta chiavi per avviare il processo. Questo processo può richiedere da 1 a 10 minuti.

Reimpostare la chiave di un certificato del servizio app

Con la reimpostazione viene emesso un nuovo certificato da parte dell'autorità di certificazione.

Al termine dell'operazione di reimpostazione della chiave, fare clic su Sincronizza. L'operazione di sincronizzazione aggiorna automaticamente le associazioni di nome host per il certificato nel servizio app senza causare tempi di inattività per le app.

Nota

Se non si fa clic su Sincronizza, il servizio app sincronizza automaticamente il certificato entro 24 ore.

Certificato da rinnovare

Per attivare il rinnovo automatico del certificato in qualsiasi momento, selezionare il certificato nella pagina Certificati del servizio app e quindi fare clic su Impostazioni di rinnovo automatico nel riquadro di spostamento a sinistra. Per impostazione predefinita, i certificati del servizio app hanno un periodo di validità di un anno.

Selezionare Attivato e fare clic su Salva. Se il rinnovo automatico è attivato, i certificati possono essere rinnovati automaticamente 30 giorni prima della scadenza.

Rinnovare automaticamente il certificato del servizio app

Per rinnovare il certificato manualmente, fare clic su Rinnovo manuale. È possibile richiedere di rinnovare il certificato manualmente 60 giorni prima della scadenza.

Al termine dell'operazione di rinnovo, fare clic su Sincronizza. L'operazione di sincronizzazione aggiorna automaticamente le associazioni di nome host per il certificato nel servizio app senza causare tempi di inattività per le app.

Nota

Se non si fa clic su Sincronizza, il servizio app sincronizza automaticamente il certificato entro 24 ore.

Esportare il certificato

Dal momento che un certificato del servizio app è un segreto di Key Vault, è possibile esportarne una copia in formato PFX e usarla per altri servizi di Azure o all'esterno di Azure.

Per esportare il certificato del servizio app come file PFX, eseguire i comandi seguenti in Cloud Shell. È possibile eseguire questa operazione anche in locale se è stata installata l'interfaccia della riga di comando di Azure. Sostituire i segnaposto con i nomi usati al momento della creazione del certificato del servizio app.

secretname=$(az resource show \
    --resource-group <group-name> \
    --resource-type "Microsoft.CertificateRegistration/certificateOrders" \
    --name <app-service-cert-name> \
    --query "properties.certificates.<app-service-cert-name>.keyVaultSecretName" \
    --output tsv)

az keyvault secret download \
    --file appservicecertificate.pfx \
    --vault-name <key-vault-name> \
    --name $secretname \
    --encoding base64

Il file appservicecertificate.pfx scaricato è un file PKCS12 non elaborato che contiene certificati pubblici e privati. A ogni prompt usare una stringa vuota sia per la password di importazione che per la passphrase PEM.

Eliminazione di un certificato

L'eliminazione di un certificato del servizio app è un'operazione definitiva e irreversibile. L'eliminazione di una risorsa certificato del servizio app comporta la revoca del certificato. Qualsiasi associazione a questo certificato nel servizio app diventa non valida. Per impedire l'eliminazione accidentale, Azure applica un blocco al certificato. Per eliminare un certificato del servizio app, è necessario prima rimuovere il blocco per l'eliminazione sul certificato.

Selezionare il certificato nella pagina Certificati del servizio app e quindi selezionare Blocchi nel riquadro di spostamento a sinistra.

Trovare il blocco di tipo Elimina sul certificato. A destra del blocco selezionare Elimina.

Eliminare il blocco per il certificato del servizio app

A questo punto è possibile eliminare il certificato del servizio app. Nel riquadro di spostamento a sinistra selezionare Panoramica > Elimina. Nella finestra di dialogo di conferma digitare il nome del certificato e scegliere OK.

<a name="automate-with-scripts">Automatizzazione con gli script

Interfaccia della riga di comando di Azure

[!code-azurecli[main](../../cli_scripts/app-service/configure-ssl-certificate/configure-ssl-certificate.sh?highlight=3-5 "Bind a custom TLS/SSL certificate to a web app")]

PowerShell

$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# Create a resource group.
New-AzResourceGroup -Name $webappname -Location $location

# Create an App Service plan in Free tier.
New-AzAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName $webappname -Tier Free

# Create a web app.
New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname

Write-Host "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Read-Host "Press [Enter] key when ready ..."

# Before continuing, go to your DNS configuration UI for your custom domain and follow the 
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the 
# hostname "www" and point it your web app's default domain name.

# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic

# Add a custom domain name to the web app. 
Set-AzWebApp -Name $webappname -ResourceGroupName $webappname `
-HostNames @($fqdn,"$webappname.azurewebsites.net")

# Upload and bind the SSL certificate to the web app.
New-AzWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn `
-CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled

Altre risorse