Schützen eines benutzerdefinierten DNS-Namens mit einer TLS-/SSL-Bindung in Azure App ServiceSecure a custom DNS name with a TLS/SSL binding in Azure App Service

In diesem Artikel erfahren Sie, wie Sie durch die Erstellung einer Zertifikatsbindung die benutzerdefinierte Domäne in Ihrer App Service-App oder Funktions-App schützen.This article shows you how to secure the custom domain in your App Service app or function app by creating a certificate binding. Wenn Sie fertig sind, können Sie am Endpunkt https:// für Ihren benutzerdefinierten DNS-Namen (z. B. https://www.contoso.com) auf Ihre App Service-App zugreifen.When you're finished, you can access your App Service app at the https:// endpoint for your custom DNS name (for example, https://www.contoso.com).

Web-App mit benutzerdefiniertem TLS-/SSL-Zertifikat

Das Schützen einer benutzerdefinierten Domäne mit einem Zertifikat umfasst zwei Schritte:Securing a custom domain with a certificate involves two steps:

In diesem Tutorial lernen Sie Folgendes:In this tutorial, you learn how to:

  • Aktualisieren des Tarifs für Ihre AppUpgrade your app's pricing tier
  • Schützen einer benutzerdefinierten Domäne mit einem ZertifikatSecure a custom domain with a certificate
  • Erzwingen von HTTPSEnforce HTTPS
  • Erzwingen von TLS 1.1/1.2Enforce TLS 1.1/1.2
  • Automatisieren der TLS-Verwaltung mit SkriptsAutomate TLS management with scripts

VoraussetzungenPrerequisites

Im Rahmen dieser Schrittanleitung müssen Sie folgende Schritte durchführen:To follow this how-to guide:

Hinweis

Die einfachste Möglichkeit zum Hinzufügen eines privaten Zertifikats besteht darin, ein von App Service verwaltetes kostenloses Zertifikat zu erstellen (Vorschau).The easiest way to add a private certificate is to create a free App Service Managed Certificate (Preview).

Vorbereiten Ihrer Web-AppPrepare your web app

Wenn Sie benutzerdefinierte Sicherheitsbindungen erstellen oder Clientzertifikate für Ihre App Service-App aktivieren möchten, müssen Sie über einen App-Service-Plan im Tarif Basic, Standard, Premium oder I verfügen.To create custom security bindings or enable client certificates for your App Service app, your App Service plan must be in the Basic, Standard, Premium, or Isolated tier. Stellen Sie in diesem Schritt sicher, dass sich Ihre Web-App im richtigen Tarif befindet.In this step, you make sure that your web app is in the supported pricing tier.

Anmelden bei AzureSign in to Azure

Öffnen Sie das Azure-Portal.Open the Azure portal.

Suchen Sie nach App Services, und wählen Sie diese Option aus.Search for and select App Services.

Auswählen von „App Services“

Wählen Sie auf der Seite App Services den Namen Ihrer Web-App aus.On the App Services page, select the name of your web app.

Portalnavigation zur Azure-App

Sie befinden sich auf der Verwaltungsseite Ihrer Web-App.You have landed on the management page of your web app.

Überprüfen des TarifsCheck the pricing tier

Scrollen Sie im linken Navigationsbereich auf der Seite Ihrer Web-App zum Abschnitt Einstellungen, und wählen Sie Hochskalieren (App Service-Plan) aus.In the left-hand navigation of your web app page, scroll to the Settings section and select Scale up (App Service plan).

Menü „Zentral hochskalieren“

Vergewissern Sie sich, dass sich Ihre Web-App nicht im Tarif F1 oder D1 befindet.Check to make sure that your web app is not in the F1 or D1 tier. Der aktuelle Tarif Ihrer Web-App wird durch einen dunkelblauen Rahmen hervorgehoben.Your web app's current tier is highlighted by a dark blue box.

Überprüfen des Tarifs

Benutzerdefiniertes SSL wird im Tarif F1 oder D1 nicht unterstützt.Custom SSL is not supported in the F1 or D1 tier. Wenn Sie Ihren App Service-Plan hochskalieren müssen, führen Sie die Schritte im nächsten Abschnitt aus.If you need to scale up, follow the steps in the next section. Schließen Sie andernfalls die Seite Hochskalieren, und überspringen Sie den Abschnitt Hochskalieren Ihres App Service-Plans.Otherwise, close the Scale up page and skip the Scale up your App Service plan section.

Hochskalieren Ihres App Service-PlansScale up your App Service plan

Wählen Sie einen der kostenpflichtigen Tarife aus (B1, B2, B3 oder einen beliebigen Tarif aus der Kategorie Produktion).Select any of the non-free tiers (B1, B2, B3, or any tier in the Production category). Klicken Sie auf Alle Optionen anzeigen, um weitere Optionen anzuzeigen.For additional options, click See additional options.

Klicken Sie auf Anwenden.Click Apply.

Auswählen eines Tarifs

Wenn die unten angegebene Benachrichtigung angezeigt wird, ist der Skalierungsvorgang abgeschlossen.When you see the following notification, the scale operation is complete.

Benachrichtigung zum Hochskalieren

Schützen einer benutzerdefinierten DomäneSecure a custom domain

Führen Sie die folgenden Schritte aus:Do the following steps:

Wählen Sie im linken Menü des Azure-Portals die Optionen App Services > <App-Name> aus.In the Azure portal, from the left menu, select App Services > <app-name>.

Öffnen Sie im linken Navigationsbereich Ihrer App das Dialogfeld TLS-/SSL-Bindung, indem Sie folgende Schritte ausführen:From the left navigation of your app, start the TLS/SSL Binding dialog by:

  • Auswählen von Benutzerdefinierte Domänen > Bindung hinzufügenSelecting Custom domains > Add binding
  • Auswählen von TLS-/SSL-Einstellungen > TLS-/SSL-Bindung hinzufügenSelecting TLS/SSL settings > Add TLS/SSL binding

Hinzufügen der Bindung zur Domäne

Wählen Sie unter Benutzerdefinierte Domäne die benutzerdefinierte Domäne aus, für die Sie eine Bindung hinzufügen möchten.In Custom Domain, select the custom domain you want to add a binding for.

Wenn Ihre App bereits über ein Zertifikat für die ausgewählte benutzerdefinierte Domäne verfügt, navigieren Sie direkt zu Bindung erstellen.If your app already has a certificate for the selected custom domain, go to Create binding directly. Gehen Sie andernfalls wie im Anschluss beschrieben vor.Otherwise, keep going.

Hinzufügen eines Zertifikats für eine benutzerdefinierte DomäneAdd a certificate for custom domain

Verfügt Ihre App über kein Zertifikat für die ausgewählte benutzerdefinierte Domäne, haben Sie zwei Optionen:If your app has no certificate for the selected custom domain, then you have two options:

Hinweis

Sie können auch ein kostenloses Zertifikat erstellen (Vorschau) oder ein Key Vault-Zertifikat importieren. Sie müssen diesen Schritt jedoch separat ausführen und anschließend zum Dialogfeld TLS-/SSL-Bindung zurückkehren.You can also Create a free certificate (Preview) or Import a Key Vault certificate, but you must do it separately and then return to the TLS/SSL Binding dialog.

Erstellen einer BindungCreate binding

Konfigurieren Sie mithilfe der folgende Tabelle die TLS-/SSL-Bindung im Dialogfeld TLS-/SSL-Bindung, und klicken Sie dann auf Bindung hinzufügen.Use the following table to help you configure the TLS binding in the TLS/SSL Binding dialog, then click Add Binding.

EinstellungSetting BESCHREIBUNGDescription
Benutzerdefinierte DomäneCustom domain Der Domänenname, für den die TLS-/SSL-Bindung hinzugefügt werden sollThe domain name to add the TLS/SSL binding for.
Fingerabdruck des privaten ZertifikatsPrivate Certificate Thumbprint Das zu bindende Zertifikat.The certificate to bind.
TLS-/SSL-TypTLS/SSL Type
  • SNI SSL: Es können mehrere SNI-SSL-Bindungen hinzugefügt werden.SNI SSL - Multiple SNI SSL bindings may be added. Bei dieser Option können mehrere zur selben IP-Adresse gehörige Domänen durch mehrere TLS-/SSL-Zertifikate geschützt werden.This option allows multiple TLS/SSL certificates to secure multiple domains on the same IP address. Die meisten modernen Browser (einschließlich Internet Explorer, Chrome, Firefox und Opera) unterstützen SNI (ausführlichere Informationen finden Sie unter Servernamensanzeige).Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (for more information, see Server Name Indication).
  • IP-SSL: Unter Umständen kann nur eine IP-SSL-Bindung hinzugefügt werden.IP SSL - Only one IP SSL binding may be added. Bei dieser Option kann eine dedizierte öffentliche IP-Adresse nur durch ein TLS-/SSL-Zertifikat geschützt werden.This option allows only one TLS/SSL certificate to secure a dedicated public IP address. Führen Sie nach dem Konfigurieren der Bindung die Schritte unter Neuzuordnen eines Datensatzes für IP-SSL durch.After you configure the binding, follow the steps in Remap records for IP SSL.
    IP-SSL wird nur in der Dienstebene Standard oder einer höheren Ebene unterstützt.IP SSL is supported only in Standard tier or above.

Nach Abschluss des Vorgangs wird der TLS-/SSL-Status der benutzerdefinierten Domäne in Sicher geändert.Once the operation is complete, the custom domain's TLS/SSL state is changed to Secure.

TLS-/SSL-Bindung erfolgreich

Hinweis

Der Zustand Sicher unter Benutzerdefinierte Domänen bedeutet, dass die Domäne durch ein Zertifikat geschützt ist. App Service überprüft jedoch nicht, ob das Zertifikat beispielsweise selbstsigniert oder abgelaufen ist, was ebenfalls dazu führen kann, dass ein Browser einen Fehler oder eine Warnung anzeigt.A Secure state in the Custom domains means that it is secured with a certificate, but App Service doesn't check if the certificate is self-signed or expired, for example, which can also cause browsers to show an error or warning.

Neuzuordnen von Datensätzen für IP-SSLRemap records for IP SSL

Wenn Sie nicht IP-SSL in Ihrer App verwenden, fahren Sie mit Testen von HTTPS fort.If you don't use IP SSL in your app, skip to Test HTTPS for your custom domain.

Sie müssen eventuell zwei Änderungen vornehmen:There are two changes you need to make, potentially:

  • Standardmäßig verwendet Ihre App eine freigegebene öffentliche IP-Adresse.By default, your app uses a shared public IP address. Wenn Sie ein Zertifikat mit IP-SSL binden, erstellt App Service eine neue, dedizierte IP-Adresse für Ihre App.When you bind a certificate with IP SSL, App Service creates a new, dedicated IP address for your app. Wenn Sie Ihrer App einen A-Eintrag zugeordnet haben, aktualisieren Sie Ihre Domänenregistrierung mit dieser neuen, dedizierten IP-Adresse.If you mapped an A record to your app, update your domain registry with this new, dedicated IP address.

    Die Seite Benutzerdefinierte Domäne Ihrer App wird mit der neuen, dedizierten IP-Adresse aktualisiert.Your app's Custom domain page is updated with the new, dedicated IP address. Kopieren Sie diese IP-Adresse und ordnen Sie dieser neuen IP-Adresse dann den A-Eintrag neu zu.Copy this IP address, then remap the A record to this new IP address.

  • Wenn eine SNI SSL-Bindung an <app-name>.azurewebsites.net besteht, ordnen Sie alle CNAME-Zuordnungen neu zu, um stattdessen auf sni.<app-name>.azurewebsites.net zu verweisen. (Fügen Sie das Präfix sni hinzu.)If you have an SNI SSL binding to <app-name>.azurewebsites.net, remap any CNAME mapping to point to sni.<app-name>.azurewebsites.net instead (add the sni prefix).

Testen von HTTPSTest HTTPS

Rufen Sie in verschiedenen Browsern https://<your.custom.domain> auf, um zu überprüfen, ob Ihre App angeboten wird.In various browsers, browse to https://<your.custom.domain> to verify that it serves up your app.

Portalnavigation zur Azure-App

Der Anwendungscode kann das Protokoll anhand des Headers „x-appservice-proto“ untersuchen.Your application code can inspect the protocol via the "x-appservice-proto" header. Der Header hat den Wert http oder https.The header will have a value of http or https.

Hinweis

Wenn Ihre App Zertifikatüberprüfungsfehler meldet, verwenden Sie wahrscheinlich ein selbstsigniertes Zertifikat.If your app gives you certificate validation errors, you're probably using a self-signed certificate.

Wenn dies nicht der Fall ist, haben Sie beim Exportieren des Zertifikats als PFX-Datei eventuell Zwischenzertifikate ausgelassen.If that's not the case, you may have left out intermediate certificates when you export your certificate to the PFX file.

Verhindern von IP-ÄnderungenPrevent IP changes

Ihre IP-Adresse für eingehenden Datenverkehr kann sich ändern, wenn Sie eine Bindung löschen, auch wenn es sich um eine IP-SSL-Bindung handelt.Your inbound IP address can change when you delete a binding, even if that binding is IP SSL. Dies ist besonders wichtig, wenn Sie ein Zertifikat verlängern, das sich bereits in einer IP-SSL-Bindung befindet.This is especially important when you renew a certificate that's already in an IP SSL binding. Um eine Änderung der IP-Adresse in Ihrer App zu vermeiden, führen Sie diese Schritte in angegebener Reihenfolge aus:To avoid a change in your app's IP address, follow these steps in order:

  1. Laden Sie das neue Zertifikat hoch.Upload the new certificate.
  2. Binden Sie das neue Zertifikat an die gewünschte benutzerdefinierte Domäne, ohne die alte zu löschen.Bind the new certificate to the custom domain you want without deleting the old one. Dadurch wird die Bindung ersetzt, anstatt die alte Bindung zu entfernen.This action replaces the binding instead of removing the old one.
  3. Löschen Sie das alte Zertifikat.Delete the old certificate.

Erzwingen von HTTPSEnforce HTTPS

Standardmäßig können Benutzer weiterhin mit HTTP auf Ihre App zugreifen.By default, anyone can still access your app using HTTP. Sie können alle HTTP-Anforderungen an den HTTPS-Port umleiten.You can redirect all HTTP requests to the HTTPS port.

Wählen Sie im linken Navigationsbereich der App-Seite SSL-Einstellungen aus.In your app page, in the left navigation, select SSL settings. Wählen Sie anschließend für Nur HTTPS die Option Ein.Then, in HTTPS Only, select On.

Erzwingen von HTTPS

Wenn der Vorgang abgeschlossen ist, navigieren Sie zu einer beliebigen HTTP-URL, die auf Ihre App verweist.When the operation is complete, navigate to any of the HTTP URLs that point to your app. Beispiel:For example:

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

Erzwingen von TLS-VersionenEnforce TLS versions

Ihre App lässt standardmäßig TLS 1.2 zu. Diese TLS-Version wird von Branchenstandards wie PCI-DSS empfohlen.Your app allows TLS 1.2 by default, which is the recommended TLS level by industry standards, such as PCI DSS. Andere TLS-Versionen können wie folgt erzwungen werden:To enforce different TLS versions, follow these steps:

Wählen Sie im linken Navigationsbereich der App-Seite SSL-Einstellungen aus.In your app page, in the left navigation, select SSL settings. Wählen Sie dann unter TLS-Version die gewünschte TLS-Mindestversion aus.Then, in TLS version, select the minimum TLS version you want. Diese Einstellung steuert nur eingehende Aufrufe.This setting controls the inbound calls only.

Erzwingen von TLS 1.1 oder 1.2

Nach Abschluss des Vorgangs lehnt Ihre App alle Verbindungen mit niedrigerer TLS-Version ab.When the operation is complete, your app rejects all connections with lower TLS versions.

Behandeln der TLS-TerminierungHandle TLS termination

In App Service erfolgt die TLS-Terminierung in den Modulen für den Netzwerklastenausgleich, sodass alle HTTPS-Anforderungen Ihre App unverschlüsselt erreichen.In App Service, TLS termination happens at the network load balancers, so all HTTPS requests reach your app as unencrypted HTTP requests. Wenn Ihre App-Logik überprüfen muss, ob Benutzeranforderungen verschlüsselt sind, können Sie dazu den Header X-Forwarded-Proto untersuchen.If your app logic needs to check if the user requests are encrypted or not, inspect the X-Forwarded-Proto header.

In sprachspezifischen Konfigurationsleitfäden (etwa unter Konfigurieren einer Linux-Node.js-App für Azure App Service) wird die Erkennung einer HTTPS-Sitzung in Ihrem Anwendungscode gezeigt.Language specific configuration guides, such as the Linux Node.js configuration guide, shows you how to detect an HTTPS session in your application code.

Automatisieren mit SkriptsAutomate with scripts

Azure CLIAzure 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"

PowerShellPowerShell

$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

Weitere RessourcenMore resources