Een aangepaste DNS-naam beveiligen met een TLS/SSL-binding in Azure App Service

In dit artikel wordt beschreven hoe u de aangepaste domein in uw App Service-app of functie-app kunt beveiligen door een certificaatbinding te maken. Wanneer u klaar bent, hebt u toegang tot uw App Service-app op het https:// eindpunt voor uw aangepaste DNS-naam (bijvoorbeeld https://www.contoso.com).

Web-app met aangepast TLS/SSL-certificaat

Het beveiligen van een aangepast domein met een certificaat bestaat uit twee stappen:

In deze zelfstudie leert u het volgende:

  • De prijscategorie van uw app upgraden
  • Een aangepast domein beveiligen met een certificaat
  • HTTPS afdwingen
  • TLS 1.1/1.2 afdwingen
  • TLS-beheer automatiseren met scripts

Vereisten

Voor het volgen van deze instructiegids:

Notitie

De eenvoudigste manier om een persoonlijk certificaat toe te voegen, is door een gratis App Service beheerd certificaat te maken.

Uw web-app voorbereiden

Als u aangepaste TLS-/SSL-bindingen wilt maken of clientcertificaten wilt inschakelen voor uw App Service-app, moet uw App Service-plan zich bevinden in de laag Basic, Standard, Premium of Isolated. In deze stap zorgt u ervoor dat de web-app zich in de ondersteunde prijscategorie bevindt.

Aanmelden bij Azure

Open Azure Portal.

Zoek en selecteer App Services.

App Services selecteren

Selecteer op de pagina App Services de naam van uw web-app.

Schermopname van de App Services-pagina in Azure Portal met een lijst van alle actieve web-apps, waarbij de eerste app in de lijst is gemarkeerd.

U bevindt zich op de beheerpagina van uw web-app.

Controleer de prijscategorie

Scrol in de navigatiebalk links van de web-app-pagina naar het gedeelte Instellingen en selecteer Opschalen (App Service-plan).

Menu Opschalen

Controleer of de web-app zich niet in de laag F1 of D1 bevindt. De huidige categorie van de web-app is gemarkeerd met een donkerblauw vak.

Controleer prijscategorie

Aangepaste SSL wordt niet ondersteund in de laag F1 of D1. Als u omhoog moet schalen, volgt u de stappen in het volgende gedeelte. Sluit anders de pagina Omhoog schalen en sla de sectie Uw App Service-plan omhoog schalen over.

Uw App Service-plan omhoog schalen

Selecteer een van de lagen die niet gratis zijn (B1, B2, B3 of een laag in de categorie Productie). Klik op Aanvullende opties bekijken voor aanvullende opties.

Klik op Toepassen.

Prijscategorie kiezen

Wanneer u de volgende melding ziet, is de schaalbewerking voltooid.

Melding voor omhoog schalen

Een aangepast domein beveiligen

Voer de volgende stappen uit:

Selecteer in het linkermenu in Azure Portal de optie App Services > <app-name> .

Open vanuit de linkernavigatiebalk van uw app het dialoogvenster TLS/SSL-binding door:

  • Aangepaste domeinen > Binding toevoegen te selecteren
  • TLS/SSL-instellingen > TLS/SSL-binding toevoegen te selecteren

Binding aan domein toevoegen

Selecteer in Aangepast domein het aangepaste domein waarvoor u een binding wilt toevoegen.

Als uw app al een certificaat voor het geselecteerde aangepaste domein heeft, gaat u direct naar Binding maken. Anders gaat u verder.

Een certificaat voor een aangepast domein toevoegen

Als uw app geen certificaat heeft voor het geselecteerde aangepaste domein, hebt u twee mogelijkheden:

Notitie

U kunt ook een gratis certificaat maken of een Key Vaultimporteren, maar u moet dit afzonderlijk doen en vervolgens terugkeren naar het dialoogvenster TLS/SSL-binding.

Binding maken

Gebruik de volgende tabel om u te helpen de TLS-binding te configureren in het dialoogvenster TLS/SSL-binding en klik vervolgens op Binding toevoegen.

Instelling Beschrijving
Aangepast domein De domeinnaam waaraan u de TLS/SSL-binding wilt toevoegen.
Vingerafdruk van het persoonlijke certificaat Het certificaat dat moet worden gebonden.
TLS/SSL-type
  • SNI SSL : Er kunnen meerdere SNI SSL-bindingen worden toegevoegd. Met deze optie kunnen meerdere TLS/SSL-certificaten verschillende domeinen beveiligen op hetzelfde IP-adres. De meeste moderne browsers (waaronder Internet Explorer, Chrome, Firefox en Opera) ondersteunen SNI (Zie Servernaamindicatie) voor meer informatie.
  • IP SSL : Er kan slechts één IP SSL-binding worden toegevoegd. Met deze optie kan slechts één TLS/SSL-certificaat een specifiek openbaar IP-adres beveiligen. Nadat u de binding hebt geconfigureerd, volgt u de stappen in Records voor IP SSL opnieuw toewijzen.
    IP SSL wordt alleen ondersteund in Standard of hoger.

Zodra de bewerking is voltooid, wordt de TLS/SSL-status van het aangepaste domein gewijzigd in Beveiligd.

TLS/SSL-binding geslaagd

Notitie

Een beveiligde status voor de aangepaste domeinen houdt in dat deze zijn beveiligd met een certificaat, maar App Service controleert bijvoorbeeld niet of het certificaat zelfondertekend of verlopen is, waardoor browsers mogelijk een fout of waarschuwing kunnen weergeven.

Records opnieuw toewijzen voor IP SSL

Als u geen op IP gebaseerde SSL in uw app gebruikt, gaat u naar HTTPS voor uw aangepaste domein testen.

Er zijn mogelijk twee wijzigingen die u moet aanbrengen:

  • Uw app maakt standaard gebruik van een gedeeld openbaar IP-adres. Wanneer u een certificaat met IP SSL verbindt, maakt App Service een nieuw, specifiek IP-adres voor uw app. Als u een A-record aan uw app hebt toegewezen, werkt u uw domeinregister bij met dit nieuwe, specifieke IP-adres.

    De pagina Aangepast domein van uw app wordt bijgewerkt met het nieuwe, specifieke IP-adres. Kopieer dit IP-adres en wijs de A-record opnieuw toe aan dit nieuwe IP-adres.

  • Als u een SNI SSL binding hebt met <app-name>.azurewebsites.net, kunt u in plaats daarvan een CNAME-toewijzing toewijzen aan sni.<app-name>.azurewebsites.net (voeg het sni-voorvoegsel toe).

HTTPS testen

Zoek in verschillende browsers naar https://<your.custom.domain> om te controleren of het naar uw app leidt.

Schermopname met een voorbeeld van het bladeren naar uw aangepaste domein met de URL contoso.com gemarkeerd.

Uw toepassingscode kan het protocol controleren via de header 'x-appservice-proto'. De header heeft de waarde http of https.

Notitie

Als uw app certificaatvalidatiefouten geeft, gebruikt u waarschijnlijk een zelfondertekend certificaat.

Als dit niet het geval is, hebt u mogelijk tussenliggende certificaten weggelaten toen u uw certificaat naar het PFX-bestand exporteerde.

IP-wijzigingen voorkomen

Uw inkomende IP-adres kan worden gewijzigd wanneer u een binding verwijdert, zelfs als die binding IP SSL is. Dit is vooral belangrijk wanneer u een certificaat vernieuwt dat zich al in een IP SSL-binding bevindt. Als u een wijziging in het IP-adres van uw app wilt voorkomen, volgt u in volgorde de volgende stappen:

  1. Upload het nieuwe certificaat.
  2. Verbind het nieuwe certificaat aan het aangepaste domein dat u wilt, zonder het oude certificaat te verwijderen. Met deze actie wordt de oude binding vervangen en niet verwijderd.
  3. Verwijder het oude certificaat.

HTTPS afdwingen

Standaard heeft iedereen nog steeds toegang tot uw app via HTTP. U kunt alle HTTP-aanvragen omleiden naar de HTTPS-poort.

Selecteer in de linkernavigatiebalk van uw app-pagina TLS/SSL-instellingen. Klik op Alleen HTTPS en selecteer Aan.

HTTPS afdwingen

Wanneer de bewerking is voltooid, gaat u naar een van de HTTP-URL's die naar uw app verwijzen. Bijvoorbeeld:

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

TLS-versies afdwingen

Voor uw app is standaard TLS 1.2 toegestaan, wat het aanbevolen TLS-niveau is volgens industrienormen zoals PCI DSS. Als u andere TLS-versies wilt afdwingen, volgt u deze stappen:

Selecteer in de linkernavigatiebalk van uw app-pagina TLS/SSL-instellingen. Selecteer vervolgens bij TLS-versie de gewenste minimale TLS-versie. Met deze instelling controleert u alleen de inkomende oproepen.

TLS 1.1 of 1.2 afdwingen

Als de bewerking is voltooid, worden in de app alle verbindingen met lagere TLS-versies geweigerd.

TLS-beëindiging verwerken

In App Service vindt TLS-beëindiging plaats in de load balancers voor het netwerk, zodat alle HTTPS-aanvragen uw app bereiken als niet-versleutelde HTTP-aanvragen. Inspecteer de header X-Forwarded-Proto als de app-logica moet controleren of de aanvragen van gebruikers al dan niet zijn versleuteld.

Taalspecifieke configuratiehandleidingen, zoals de handleiding Node.js-configuratie voor Linux, laten zien hoe u een HTTPS-sessie in uw toepassingscode kunt detecteren.

Certificaatbinding vernieuwen

Notitie

Zie Exporteren (App Service App Service) alsu een certificaat wilt vernieuwen dat u App Service hebt gekocht. App Service kunnen automatisch worden vernieuwd en de binding kan automatisch worden gesynchroniseerd.

Als u een verlopend certificaat wilt vervangen, kan de manier waarop u de certificaatbinding bij het nieuwe certificaat bij te werken een nadelige invloed hebben op de gebruikerservaring. Uw binnenkomende IP-adres kan bijvoorbeeld veranderen wanneer u een binding verwijdert, zelfs als die binding op IP is gebaseerd. Dit is vooral belangrijk wanneer u een certificaat vernieuwt dat zich al in een IP-gebaseerde binding bevindt. Volg de volgende stappen om een wijziging in het IP-adres van uw app te voorkomen en downtime voor uw app te voorkomen:

  1. Upload het nieuwe certificaat.
  2. Bind het nieuwe certificaat aan hetzelfde aangepaste domein zonder het bestaande (verlopende) certificaat te verwijderen. Met deze actie wordt de binding vervangen in plaats van het bestaande certificaat te verwijderen.
  3. Verwijder het bestaande certificaat.

Automatiseren met scripts

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

Meer bronnen