Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come fornire sicurezza per il dominio personalizzatonell'app del servizio app di Azure o nell'app per le funzioni creando un'associazione di certificati. Una volta terminato, è possibile accedere all'app del servizio App Service nell'endpoint https://
per il tuo nome personalizzato del sistema DNS (Domain Name System). Un esempio è https://www.contoso.com
.
Prerequisiti
- Scala la tua app di App Service a uno dei piani tariffari supportati: Basic, Standard o 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 riquadro sinistro, selezionare App Services><app-name>.
Nel riquadro 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:
- Crea un certificato gestito di App Service: Consenti ad App Service 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 App Service: Nel App Service Certificate, selezionare il certificato App Service acquistato per il dominio selezionato.
- Caricare il certificato (pfx): seguire il flusso di lavoro in Caricare un certificato privato per caricare un certificato PFX (Personal Information Exchange) dal computer locale e specificare la password del certificato.
- Importa da Key Vault: Scegliere Seleziona certificato dell'insieme di credenziali delle chiavi e selezionare il certificato nella finestra di dialogo.
In TIPO TLS/SSL selezionare SSL SNI o SSL basato su IP:
- SNI SSL: È possibile aggiungere più vincoli SSL SNI, ossia Secure Sockets Layer con Server Name Indication. Questa opzione consente a più certificati TLS (Transport Layer Security)/SSL di 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, selezionare Convalida per convalidare il nuovo certificato.
Selezionare Aggiungi.
Al termine dell'operazione, lo stato TLS/SSL del dominio personalizzato viene modificato in Protetto.
Uno stato Protetto nei domini personalizzati significa che un certificato fornisce sicurezza. Il servizio app non verifica se il certificato è autofirmato o scaduto, che può anche causare la visualizzazione di un errore o di 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.
Esistono potenzialmente due modifiche che è necessario apportare:
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 e quindi rieseguire il mapping del record A a questo nuovo 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
.
Se l'app restituisce errori di convalida del certificato, è probabile che sia in uso un certificato autofirmato. Se non è così, probabilmente hai omesso i certificati intermedi quando hai esportato il tuo certificato nel file con estensione .pfx.
Domande frequenti
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 comportamento è particolarmente importante quando si rinnova un certificato già nella configurazione IP SSL. Per evitare una modifica nell'indirizzo IP dell'app, seguire questa procedura:
- 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. Gli standard di settore, ad esempio PCI DSS , consigliano questo livello TLS. 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