Proteggere un nome DNS personalizzato con un'associazione TLS/SSL nel Servizio app di Azure
Questo articolo illustra come proteggere il dominio personalizzato nell’app del Servizio app di Azure o app per le funzioni creando un'associazione di certificati. Al termine, sarà possibile accedere Servizio app di Azure all'endpoint https://
per nome DNS personalizzato (ad esempio https://www.contoso.com
).
Prerequisiti
- Aumentare le prestazioni dell'app del Servizio app di Azure in uno dei piani tariffari supportati: Basic, Standard, Premium.
- Eseguire il mapping di un nome di dominio all'app o acquistarlo e configurarlo in Azure.
Aggiungere l'associazione
Nel portale di Azure:
Nel menu a sinistra, selezionare Servizi app><Nome app>.
Nel riquadro di spostamento sinistro dell'app, selezionare Domini personalizzati.
Accanto al dominio personalizzato selezionare Aggiungi associazione.
Se l'app ha già un certificato per il dominio personalizzato selezionato, è possibile selezionarlo in Certificato. In caso contrario, è necessario aggiungere un certificato usando una delle selezioni in Origine.
- Creare un certificato gestito del servizio app: consentire al servizio app di creare un certificato gestito per il dominio selezionato. Questa opzione è la più semplice. Per altre informazioni, vedere Creare un certificato gestito gratuito.
- Importa certificato del servizio app: nel certificato del servizio app, selezionare un certificato del servizio app acquistato per il dominio selezionato.
- Caricare il certificato (pfx): seguire il flusso di lavoro in Carica un certificato privato per caricare un certificato PFX dal computer locale e specificare la password del certificato.
- Importa da Key Vault: selezionare Seleziona certificato dell'insieme di credenziali delle chiavi e selezionare il certificato nella finestra di dialogo.
In tipo TLS/SSLselezionare SNI SSL o SSL basato su IP.
- SNI SSL: è possibile aggiungere più associazioni SNI SSL. Questa opzione consente di usare più certificati TLS/SSL per proteggere più domini nello stesso indirizzo IP. La maggior parte dei browser moderni (tra cui Microsoft Edge, Chrome, Firefox e Opera) supporta SNI. (Per altre informazioni, vedere Indicazione nome server.)
- SSL basato su IP: è possibile aggiungere una sola associazione IP SSL. Questa opzione consente di usare solo un certificato TLS/SSL per proteggere un indirizzo IP pubblico dedicato. Dopo aver configurato l’associazione, seguire i passaggi descritti in Modificare il mapping dei record per SSL basato su IP.
SSL basato su IP è supportato solo nel livello Standard o superiore.
Quando si aggiunge un nuovo certificato, convalidare il nuovo certificato selezionando Convalida.
Selezionare Aggiungi.
Al termine dell'operazione, lo stato TLS/SSL del dominio personalizzato passa a Protetto.
Nota
Uno stato protetto in domini personalizzati indica che un certificato fornisce protezione, ma il servizio app non verifica se il certificato è autofirmato o scaduto, ad esempio, il che può anche causare la visualizzazione di un errore o un avviso da parte dei browser.
Modificare il mapping dei record per SSL basato su IP
Questo passaggio è necessario solo per SSL basato su IP. Per un'associazione SSL SNI, passare a Test HTTPS.
È potenzialmente necessario apportare due modifiche:
Per impostazione predefinita, l'app usa un indirizzo IP pubblico condiviso. Quando si associa un certificato con il protocollo IP SSL, il servizio app crea un nuovo indirizzo IP dedicato per l'app. Se si è eseguito il mapping di un record A all'app, aggiornare il Registro di sistema del dominio con questo nuovo indirizzo IP dedicato.
La pagina Dominio personalizzato dell'app viene aggiornata con il nuovo indirizzo IP dedicato. Copiare questo indirizzo IP, quindi eseguire nuovamente il mapping del record A a questo indirizzo IP.
Se si dispone di un'associazione SNI SSL per
<app-name>.azurewebsites.net
, eseguire nuovamente tutti i mapping di CNAME in modo che puntino asni.<app-name>.azurewebsites.net
. (Aggiungere il prefissosni
.)
Testare HTTPS
Passare a https://<your.custom.domain>
in vari browser per verificare che venga visualizzata l'app.
Il codice dell'applicazione può esaminare il protocollo tramite l'intestazione x-appservice-proto
. L'intestazione ha un valore pari a http
o https
.
Nota
Se l'app restituisce errori di convalida del certificato, è probabile che sia in uso un certificato autofirmato.
In caso contrario, è possibile che siano stati esclusi i certificati intermedi durante l'esportazione del certificato in formato PFX.
Domande frequenti
- Come assicurarsi che l'indirizzo IP dell'app non venga modificato quando si apportano modifiche all'associazione di certificati?
- È possibile disabilitare il reindirizzamento forzato da HTTP a HTTPS?
- Come modificare le versioni minime di TLS per l'app?
- Come si gestisce la terminazione TLS nel servizio app?
Come assicurarsi che l'indirizzo IP dell'app non venga modificato quando si apportano modifiche all'associazione di certificati?
L'indirizzo IP in ingresso può essere modificato quando si elimina un'associazione, anche se tale associazione è IP SSL. Questo aspetto è particolarmente importante quando si rinnova un certificato che si trova già in un'associazione IP SSL. Per evitare una modifica dell'indirizzo IP dell'app, seguire questi passaggi nell'ordine indicato:
- Caricare il nuovo certificato.
- Associare il nuovo certificato al dominio personalizzato desiderato senza eliminare quello precedente. Questa operazione sostituisce l'associazione anziché rimuovere quella precedente.
- Eliminare il certificato precedente.
È possibile disabilitare il reindirizzamento forzato da HTTP a HTTPS?
Per impostazione predefinita, il servizio app forza un reindirizzamento dalle richieste HTTP a HTTPS. Per disabilitare questo comportamento, vedere Configurare le impostazioni generali.
Come modificare le versioni minime di TLS per l'app?
L'app consente TLS 1.2 per impostazione predefinita, che è il livello TLS consigliato dagli standard di settore, ad esempio PCI DSS. Per applicare versioni TLS diverse, vedere Configurare le impostazioni generali.
Come si gestisce la terminazione TLS nel servizio app?
Nel servizio app la terminazione TLS si verifica nei servizi di bilanciamento del carico di rete, quindi tutte le richieste HTTPS raggiungono l'app come richieste HTTP non crittografate. Se la logica dell'app deve controllare se le richieste degli utenti sono crittografate, esaminare l'intestazione X-Forwarded-Proto
.
Le guide di configurazione specifiche del linguaggio, ad esempio la guida alla configurazione di Node.js per Linux, illustrano come rilevare una sessione HTTPS nel codice dell'applicazione.
Automatizzazione con gli script
Interfaccia della riga di comando di Azure
Associare un certificato TLS/SSL personalizzato a un'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.
$webapp = New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname
Write-Host "Sign in to your domain provider's website and configure the following records:"
Write-Host "A CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Write-Host "A TXT record that maps asuid.$fqdn to the domain verification ID $($webapp.CustomDomainVerificationId)"
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