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

Vereisten

1. Voeg de binding toe

In Azure Portal:

  1. Selecteerapp-naam<>> in het menu links.

  2. Selecteer in het linkernavigatievenster van uw app De optie Aangepaste domeinen

  3. Selecteer binding toevoegen naast het aangepaste domein

    Een schermopname die laat zien hoe u het dialoogvenster TLS/SSL-binding toevoegen start.

  4. Als uw app al een certificaat heeft voor het geselecteerde aangepaste domein, kunt u dit selecteren in Certificaat. Zo niet, dan moet u een certificaat toevoegen met behulp van een van de selecties in Bron.

    • App Service beheerd certificaat maken: laat App Service een beheerd certificaat maken voor het geselecteerde domein. Deze optie is de eenvoudigste. Zie Een gratis beheerd certificaat maken voor meer informatie.
    • App Service-certificaat importeren: kies in App Service Certificaat een App Service certificaat dat u hebt gekocht voor het geselecteerde domein.
    • Certificaat uploaden (.pfx): volg de werkstroom in Een persoonlijk certificaat uploaden om een PFX-certificaat te uploaden vanaf uw lokale computer en geef het certificaatwachtwoord op.
    • Importeren uit Key Vault: selecteer Sleutelkluiscertificaat selecteren en selecteer het certificaat in het dialoogvenster.
  5. Kies in TLS/SSL-type tussen SNI SSL en OP IP gebaseerde SSL.

    • 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.
      • SSL op basis van IP: 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 2. Records opnieuw toewijzen voor OP IP gebaseerde SSL.
        IP SSL wordt alleen ondersteund in de Basic-laag of hoger.
  6. Wanneer u een nieuw certificaat toevoegt, valideert u het nieuwe certificaat door Valideren te selecteren.

  7. Selecteer Toevoegen.

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

    Een schermopname van het aangepaste domein dat wordt beveiligd door een certificaatbinding.

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.

2. Records opnieuw toewijzen voor SSL op basis van IP

Deze stap is alleen nodig voor SSL op basis van IP. Ga voor een SNI SSL-binding naar HTTPS testen voor uw aangepaste domein.

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).

3. 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.

Veelgestelde vragen

Hoe kan ik ervoor zorgen dat het IP-adres van de app niet wordt gewijzigd wanneer ik wijzigingen aanbrengt in de certificaatbinding?

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.

Kan ik de geforceerde omleiding van HTTP naar HTTPS uitschakelen?

Standaard dwingt App Service een omleiding van HTTP-aanvragen naar HTTPS af. Zie Algemene instellingen configureren om dit gedrag uit te schakelen.

Hoe kan ik de minimale TLS-versies voor de app wijzigen?

Voor uw app is standaard TLS 1.2 toegestaan, wat het aanbevolen TLS-niveau is volgens industrienormen zoals PCI DSS. Zie Algemene instellingen configureren als u verschillende TLS-versies wilt afdwingen.

Hoe kan ik TLS-beëindiging afhandelen in App Service?

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.

Automatiseren met scripts

Azure CLI

Een aangepast TLS/SSL-certificaat binden aan een web-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

Meer bronnen