Proteggere un nome DNS personalizzato con un'associazione TLS/SSL nel Servizio app di Azure
Questo articolo illustra come proteggere il dominio personalizzato nel 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 il numero di app servizio app in uno dei piani tariffari supportati: Basic, Standard, Premium.
- Eseguire il mapping di un nome di dominio all'app o acquistare e configurarlo in Azure.
1. Aggiungere l'associazione
Nel portale di Azure:
Dal menu a sinistra selezionare App Services><app-name>.
Nella navigazione a sinistra 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 servizio app certificato gestito: consentire servizio app creare un certificato gestito per il dominio selezionato. Questa opzione è la più semplice. Per altre informazioni, vedere Creare un certificato gestito gratuito.
- Importa servizio app certificato: in servizio app certificato scegliere un certificato servizio app acquistato per il dominio selezionato.
- Caricare il certificato (pfx): seguire il flusso di lavoro in Caricare un certificato privato per caricare un certificato PFX dal computer locale e specificare la password del certificato.
- Importa da Key Vault: selezionare Selezionare il certificato dell'insieme di credenziali delle chiavi e selezionare il certificato nella finestra di dialogo.
Nel tipo TLS/SSL scegliere tra SSL SNI e SSL basato su IP.
- SNI SSL: è possibile aggiungere più associazioni SSL SNI. 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 Internet Explorer, Chrome, Firefox e Opera) supporta SNI (per altre informazioni vedere Indicazione nome server).
-
SSL basato su IP: è possibile aggiungere un'unica associazione SSL IP. Questa opzione consente di usare solo un certificato TLS/SSL per proteggere un indirizzo IP pubblico dedicato. Dopo aver configurato l'associazione, seguire la procedura descritta in 2. Eseguire il mapping dei record per SSL basato su IP.
IP SSL è supportato solo nel livello Basic 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
Lo stato Protetto nei domini personalizzati indica che i domini sono protetti con un certificato, ma, ad esempio, il Servizio app non verifica se il certificato è autofirmato o scaduto e questo può causare la visualizzazione di un errore o di un avviso nei browser.
2. Rimap 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 per il dominio personalizzato.
È 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 il mapping del record A a questo nuovo indirizzo IP.
Se è presente un binding SNI SSL a
<app-name>.azurewebsites.net
, modificare tutti i mapping CNAME in modo che puntino asni.<app-name>.azurewebsites.net
(aggiungere il prefissosni
).
3. Testare HTTPS
In diversi browser passare a https://<your.custom.domain>
per verificare che l'app sia gestita.
Il codice dell'applicazione può ispezionare il protocollo tramite l'intestazione "x-appservice-proto". L'intestazione ha un valore di http
o https
.
Nota
Se l'app restituisce errori di convalida del certificato, è probabile che sia in uso un certificato autofirmato.
Se non è questo il motivo, è possibile che siano stati esclusi i certificati intermedi durante l'esportazione del certificato nel file PFX.
Domande frequenti
- Ricerca per categorie 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 è possibile modificare le versioni tls minime per l'app?
- Ricerca per categorie gestire la terminazione TLS in servizio app?
Ricerca per categorie 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, servizio app forza un reindirizzamento dalle richieste HTTP a HTTPS. Per disabilitare questo comportamento, vedere Configurare le impostazioni generali.
Come è possibile modificare le versioni tls minime 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.
Ricerca per categorie gestire la terminazione TLS in 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 o meno, 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 Web
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
Altre risorse
- Usare un certificato TLS/SSL nel codice nel Servizio app di Azure
- FAQ: App Service Certificates (Domande frequenti: certificati del servizio app)