Skydda ett anpassat DNS-namn med en TLS/SSL-bindning i Azure App Service

Den här artikeln visar hur du skyddar den anpassade domänen i din App Service-app eller funktionsapp genom att skapa en certifikatbindning. När du är klar kan du komma åt din App Service-app på https:// slutpunkten för ditt anpassade DNS-namn (till exempel https://www.contoso.com ).

Webbapp med anpassat TLS/SSL-certifikat

Att skydda en anpassad domän med ett certifikat omfattar två steg:

I den här guiden får du lära dig att:

  • Uppgradera prisnivån för din app
  • Skydda en anpassad domän med ett certifikat
  • Använda HTTPS
  • Använda TLS 1.1/1.2
  • Automatisera hantering av TLS med skript

Förutsättningar

Så här följer du den här instruktionerna:

Anteckning

Det enklaste sättet att lägga till ett privat certifikat är att skapa ett kostnadsfritt App Service hanterat certifikat.

Förbereda din webbapp

För att skapa anpassade TLS/SSL-bindningar eller aktivera klient certifikat för din App Service-app, måste App Service plan finnas på nivån Basic, standard, Premium eller isolerad . I det här steget ser du till att webbappen har en prisnivå som stöds.

Logga in på Azure

Öppna Azure-portalen.

Sök efter och välj app Services.

Välj App Services

På sidan app Services väljer du namnet på din webbapp.

Skärm bild av App Services sidan i Azure Portal visar en lista över alla webb program som körs, med den första appen i listan markerad.

Du har landat på hanterings sidan för din webbapp.

Kontrollera prisnivån

I det vänstra navigeringsfältet på webbappsidan bläddrar du till avsnittet Inställningar och väljer Skala upp (App Service-plan).

Skala upp-menyn

Kontrollera att webbappen inte är på nivån F1 eller D1. Appens aktuella nivå markeras med en mörkblå ruta.

Kontrollera prisnivå

Anpassat SSL stöds inte på nivån F1 eller D1. Om du behöver skala upp följer du stegen i nästa avsnitt. I annat fall stängs sidan Skala upp och hoppar över avsnittet Skala upp App Service-planen.

Skala upp App Service-planen

Välj någon av betalnivåerna (B1, B2, B3 eller någon nivå i kategorin Produktion). Klicka på Visa ytterligare alternativ om du vill se fler alternativ.

Klicka på Applicera.

Välja prisnivå

När du ser följande meddelande har skalningsåtgärden slutförts.

Uppskalningsmeddelande

Skydda en anpassad domän

Gör följande:

I den Azure Portalmenyn till vänster väljer du App Services > <app-name> .

I appens vänstra navigeringsfält startar du dialogrutan TLS/SSL-bindning genom att:

  • Välja Anpassade domäner Lägg till > bindning
  • Välja TLS/SSL-inställningar Lägg till > TLS/SSL-bindning

Lägga till bindning till domän

I Custom Domain väljer du den anpassade domän som du vill lägga till en bindning för.

Om appen redan har ett certifikat för den valda anpassade domänen går du till Skapa bindning direkt. Annars fortsätter du.

Lägga till ett certifikat för en anpassad domän

Om appen inte har något certifikat för den valda anpassade domänen har du två alternativ:

Anteckning

Du kan också Skapa ett kostnadsfritt certifikat eller Importera ett Key Vault-certifikat,men du måste göra det separat och sedan gå tillbaka till dialogrutan TLS/SSL-bindning.

Skapa bindning

Använd följande tabell som hjälp för att konfigurera TLS-bindningen i dialogrutan TLS/SSL-bindning och klicka sedan på Lägg till bindning.

Inställning Beskrivning
Anpassad domän Domännamnet som TLS/SSL-bindningen ska läggas till för.
Tumavtryck för privat certifikat Certifikatet som ska bindas.
TLS/SSL-typ
  • SNI SSL – Flera SNI SSL bindningar kan läggas till. Med det här alternativet kan flera TLS/SSL-certifikat skydda flera domäner på samma IP-adress. De flesta moderna webbläsare (inklusive Internet Explorer, Chrome, Firefox och Opera) stöder SNI (mer information finns i Servernamnindikator).
  • IP SSL – Endast en IP SSL bindning kan läggas till. Med det här alternativet kan endast ett TLS/SSL-certifikat skydda en dedikerad offentlig IP-adress. När du har konfigurerat bindningen följer du stegen i Mappa om poster för IP SSL.
    IP SSL stöds endast på standardnivån eller högre.

När åtgärden har slutförts ändras den anpassade domänens TLS/SSL-tillstånd till Säker.

TLS/SSL-bindningen lyckades

Anteckning

Ett säkert tillstånd i de anpassade domänerna innebär att det skyddas med ett certifikat, men App Service kontrollerar inte om certifikatet är själv signerat eller har upphört att gälla, till exempel, vilket kan göra att webbläsare visar ett fel eller en varning.

Mappa om poster för IP SSL

Om du inte använder IP SSL i din app går du vidare till Testa HTTPS för din anpassade domän.

Det finns två ändringar du behöver göra, eventuellt:

  • Som standard använder din app en delad offentlig IP-adress. När du binder ett certifikat med IP SSL skapar App Service en ny dedikerad IP-adress för din app. Om du mappade en A-post till din app uppdaterar du domänregistret med den nya dedikerade IP-adressen.

    Din apps Anpassad domän-sida uppdateras med den nya dedikerade IP-adressen. Kopiera den här IP-adressen och mappa om A-posten till den nya IP-adressen.

  • Om du har en SNI SSL till mappar du om eventuell <app-name>.azurewebsites.net CNAME-mappning så att den pekar på sni.<app-name>.azurewebsites.net i stället (lägg till sni prefixet).

Testa HTTPS

I olika webbläsare bläddrar du till https://<your.custom.domain> för att kontrollera att den fungerar med din app.

Skärmbild som visar ett exempel på hur du bläddrar till din anpassade domän contoso.com URL:en markerad.

Programkoden kan inspektera protokollet via rubriken "x-appservice-proto". -huvudet har värdet http eller https .

Anteckning

Om din app visar fel i certifikatverifieringen så använder du förmodligen ett självsignerat certifikat.

Om detta inte är fallet kan du ha utelämnat mellanliggande certifikat när du exporterade certifikatet till PFX-filen.

Förhindra IP-ändringar

Din inkommande IP-adress kan ändras när du tar bort en bindning, även om bindningen IP SSL. Detta är särskilt viktigt när du förnyar ett certifikat som redan finns i en IP SSL bindning. Du kan förhindra att appens IP-adress ändras genom att följa stegen nedan i ordning:

  1. Ladda upp det nya certifikatet.
  2. Bind det nya certifikatet till önskad anpassad domän utan att ta bort det gamla. Med den här åtgärden ersätts bindningen i stället för att den gamla tas bort.
  3. Ta bort det gamla certifikatet.

Använda HTTPS

Som standard kan alla fortfarande komma åt din app med HTTP. Du kan omdirigera alla HTTP-begäranden till HTTPS-porten.

Välj TLS/SSL-inställningar i det vänstra navigeringsfönstret på appsidan. I Endast HTTPS väljer du .

Använda HTTPS

När åtgärden har slutförts går du till någon av de HTTP-webbadresser som pekar på din app. Exempel:

  • http://<app_name>.azurewebsites.net
  • http://contoso.com
  • http://www.contoso.com

Framtvinga TLS-version

Din app tillåter TLS 1.2 som standard, vilket är den rekommenderade TLS-nivån enligt branschstandarder, t.ex. PCI DSS. Följ dessa steg om du vill genomdriva en högre TLS-version:

Välj TLS/SSL-inställningar i det vänstra navigeringsfönstret på appsidan. I TLS-version väljer du sedan den lägsta TLS-version du vill använda. Den här inställningen styr endast inkommande samtal.

Kräv TLS 1.1 eller 1.2

När åtgärden är klar avvisar appen alla anslutningar med lägre TLS-version.

Hantera TLS-avslutning

I App Service sker TLS-avslutning vid lastbalanserarna i nätverket, så alla HTTPS-begäranden når din app som okrypterade HTTP-begäranden. Om din applogik behöver kontrollera om användarbegäranden är krypterade eller inte kan du kontrollera X-Forwarded-Proto-rubriken.

Språkspecifika konfigurationsguider, till exempel konfigurationsguiden för Linux Node.js, visar hur du identifierar en HTTPS-session i programkoden.

Förnya certifikatbindning

Anteckning

Information om hur du App Service ett certifikat som duhar köpt finns i Exportera (ett App Service)-certifikat. App Service certifikat kan förnyas automatiskt och bindningen kan synkroniseras automatiskt.

Om du vill ersätta ett utgånget certifikat kan hur du uppdaterar certifikatbindningen med det nya certifikatet påverka användarupplevelsen negativt. Din inkommande IP-adress kan till exempel ändras när du tar bort en bindning, även om bindningen är IP-baserad. Detta är särskilt viktigt att ha i åtanke när du förnyar ett certifikat som redan finns i en IP-baserad bindning. Följ dessa steg i ordning för att undvika ändringar i appens IP-adress och för att undvika avbrott i appen:

  1. Ladda upp det nya certifikatet.
  2. Bind det nya certifikatet till samma anpassade domän utan att ta bort det befintliga (utgående) certifikatet. Den här åtgärden ersätter bindningen i stället för att ta bort det befintliga certifikatet.
  3. Ta bort det befintliga certifikatet.

Automatisera med skript

Azure CLI

#!/bin/bash

fqdn=<replace-with-www.{yourdomain}>
pfxPath=<replace-with-path-to-your-.PFX-file>
pfxPassword=<replace-with-your=.PFX-password>
resourceGroup=myResourceGroup
webappname=mywebapp$RANDOM

# Create a resource group.
az group create --location westeurope --name $resourceGroup

# Create an App Service plan in Basic tier (minimum required by custom domains).
az appservice plan create --name $webappname --resource-group $resourceGroup --sku B1

# Create a web app.
az webapp create --name $webappname --resource-group $resourceGroup \
--plan $webappname

echo "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
read -p "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.

# Map your prepared custom domain name to the web app.
az webapp config hostname add --webapp-name $webappname --resource-group $resourceGroup \
--hostname $fqdn

# Upload the SSL certificate and get the thumbprint.
thumbprint=$(az webapp config ssl upload --certificate-file $pfxPath \
--certificate-password $pfxPassword --name $webappname --resource-group $resourceGroup \
--query thumbprint --output tsv)

# Binds the uploaded SSL certificate to the web app.
az webapp config ssl bind --certificate-thumbprint $thumbprint --ssl-type SNI \
--name $webappname --resource-group $resourceGroup

echo "You can now browse to https://$fqdn"

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

Fler resurser