Schützen eines benutzerdefinierten DNS-Namens mit einer TLS-/SSL-Bindung 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. 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.

Web app with custom TLS/SSL certificate

Das Schützen einer benutzerdefinierten Domäne mit einem Zertifikat umfasst zwei Schritte:

In diesem Tutorial lernen Sie Folgendes:

  • Aktualisieren des Tarifs für Ihre App
  • Schützen einer benutzerdefinierten Domäne mit einem Zertifikat
  • Erzwingen von HTTPS
  • Erzwingen von TLS 1.1/1.2
  • Automatisieren der TLS-Verwaltung mit Skripts

Voraussetzungen

Im Rahmen dieser Schrittanleitung müssen Sie folgende Schritte durchführen:

Hinweis

Die einfachste Möglichkeit zum Hinzufügen eines privaten Zertifikats besteht darin, ein von App Service verwaltetes kostenloses Zertifikat zu erstellen.

Vorbereiten Ihrer Web-App

Wenn Sie benutzerdefinierte TLS-/SSL-Bindungen 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 Isolated verfügen. Stellen Sie in diesem Schritt sicher, dass sich Ihre Web-App im richtigen Tarif befindet.

Anmelden bei Azure

Öffnen Sie das Azure-Portal.

Suchen Sie nach App Services, und wählen Sie diese Option aus.

Select App Services

Wählen Sie auf der Seite App Services den Namen Ihrer Web-App aus.

Screenshot of the App Services page in Azure portal showing a list of all running web apps, with the first app in the list highlighted.

Sie befinden sich auf der Verwaltungsseite Ihrer Web-App.

Überprüfen des Tarifs

Scrollen Sie im linken Navigationsbereich auf der Seite Ihrer Web-App zum Abschnitt Einstellungen, und wählen Sie Hochskalieren (App Service-Plan) aus.

Scale-up menu

Vergewissern Sie sich, dass sich Ihre Web-App nicht im Tarif F1 oder D1 befindet. Der aktuelle Tarif Ihrer Web-App wird durch einen dunkelblauen Rahmen hervorgehoben.

Check pricing tier

Benutzerdefiniertes SSL wird im Tarif F1 oder D1 nicht unterstützt. Wenn Sie Ihren App Service-Plan hochskalieren müssen, führen Sie die Schritte im nächsten Abschnitt aus. Schließen Sie andernfalls die Seite Hochskalieren, und überspringen Sie den Abschnitt Hochskalieren Ihres App Service-Plans.

Hochskalieren Ihres App Service-Plans

Wählen Sie einen der kostenpflichtigen Tarife aus (B1, B2, B3 oder einen beliebigen Tarif aus der Kategorie Produktion). Klicken Sie auf Alle Optionen anzeigen, um weitere Optionen anzuzeigen.

Klicken Sie auf Übernehmen.

Choose pricing tier

Wenn die unten angegebene Benachrichtigung angezeigt wird, ist der Skalierungsvorgang abgeschlossen.

Scale up notification

Schützen einer benutzerdefinierten Domäne

Führen Sie die folgenden Schritte aus:

Wählen Sie im Azure-Portal im linken Menü App Services><App-Name> aus.

Öffnen Sie im linken Navigationsbereich Ihrer App das Dialogfeld TLS-/SSL-Bindung, indem Sie folgende Schritte ausführen:

  • Auswählen von Benutzerdefinierte Domänen>Bindung hinzufügen
  • Auswählen von TLS-/SSL-Einstellungen>TLS-/SSL-Bindung hinzufügen

Add binding to domain

Wählen Sie unter Benutzerdefinierte Domäne die benutzerdefinierte Domäne aus, für die Sie eine Bindung hinzufügen möchten.

Wenn Ihre App bereits über ein Zertifikat für die ausgewählte benutzerdefinierte Domäne verfügt, navigieren Sie direkt zu Bindung erstellen. Gehen Sie andernfalls wie im Anschluss beschrieben vor.

Hinzufügen eines Zertifikats für eine benutzerdefinierte Domäne

Verfügt Ihre App über kein Zertifikat für die ausgewählte benutzerdefinierte Domäne, haben Sie zwei Optionen:

Hinweis

Sie können auch ein kostenloses Zertifikat erstellen 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.

Erstellen einer Bindung

Konfigurieren Sie mithilfe der folgende Tabelle die TLS-/SSL-Bindung im Dialogfeld TLS-/SSL-Bindung, und klicken Sie dann auf Bindung hinzufügen.

Einstellung BESCHREIBUNG
Benutzerdefinierte Domäne Der Domänenname, für den die TLS-/SSL-Bindung hinzugefügt werden soll
Fingerabdruck des privaten Zertifikats Das zu bindende Zertifikat.
TLS-/SSL-Typ
  • SNI SSL: Es können mehrere SNI-SSL-Bindungen hinzugefügt werden. Bei dieser Option können mehrere zur selben IP-Adresse gehörige Domänen durch mehrere TLS-/SSL-Zertifikate geschützt werden. Die meisten modernen Browser (einschließlich Internet Explorer, Chrome, Firefox und Opera) unterstützen SNI (ausführlichere Informationen finden Sie unter Servernamensanzeige).
  • IP-SSL: Unter Umständen kann nur eine IP-SSL-Bindung hinzugefügt werden. Bei dieser Option kann eine dedizierte öffentliche IP-Adresse nur durch ein TLS-/SSL-Zertifikat geschützt werden. Führen Sie nach dem Konfigurieren der Bindung die Schritte unter Neuzuordnen eines Datensatzes für IP-SSL durch.
    IP-SSL wird nur in der Dienstebene Standard oder einer höheren Ebene unterstützt.

Nach Abschluss des Vorgangs wird der TLS-/SSL-Status der benutzerdefinierten Domäne in Sicher geändert.

TLS/SSL binding successful

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.

Neuzuordnen von Datensätzen für IP-SSL

Wenn Sie nicht IP-SSL in Ihrer App verwenden, fahren Sie mit Testen von HTTPS fort.

Sie müssen eventuell zwei Änderungen vornehmen:

  • Standardmäßig verwendet Ihre App eine freigegebene öffentliche IP-Adresse. Wenn Sie ein Zertifikat mit IP-SSL binden, erstellt App Service eine neue, dedizierte IP-Adresse für Ihre App. Wenn Sie Ihrer App einen A-Eintrag zugeordnet haben, aktualisieren Sie Ihre Domänenregistrierung mit dieser neuen, dedizierten IP-Adresse.

    Die Seite Benutzerdefinierte Domäne Ihrer App wird mit der neuen, dedizierten IP-Adresse aktualisiert. Kopieren Sie diese IP-Adresse und ordnen Sie dieser neuen IP-Adresse dann den A-Eintrag neu zu.

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

Testen von HTTPS

Rufen Sie in verschiedenen Browsern https://<your.custom.domain> auf, um zu überprüfen, ob Ihre App angeboten wird.

Screenshot showing an example of browsing to your custom domain with the contoso.com URL highlighted.

Der Anwendungscode kann das Protokoll anhand des Headers „x-appservice-proto“ untersuchen. Der Header hat den Wert http oder https.

Hinweis

Wenn Ihre App Zertifikatüberprüfungsfehler meldet, verwenden Sie wahrscheinlich ein selbstsigniertes Zertifikat.

Wenn dies nicht der Fall ist, haben Sie beim Exportieren des Zertifikats als PFX-Datei eventuell Zwischenzertifikate ausgelassen.

Verhindern von IP-Änderungen

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. Dies ist besonders wichtig, wenn Sie ein Zertifikat verlängern, das sich bereits in einer IP-SSL-Bindung befindet. Um eine Änderung der IP-Adresse in Ihrer App zu vermeiden, führen Sie diese Schritte in angegebener Reihenfolge aus:

  1. Laden Sie das neue Zertifikat hoch.
  2. Binden Sie das neue Zertifikat an die gewünschte benutzerdefinierte Domäne, ohne die alte zu löschen. Dadurch wird die Bindung ersetzt, anstatt die alte Bindung zu entfernen.
  3. Löschen Sie das alte Zertifikat.

Erzwingen von HTTPS

Standardmäßig können Benutzer weiterhin mit HTTP auf Ihre App zugreifen. Sie können alle HTTP-Anforderungen an den HTTPS-Port umleiten.

Wählen Sie im linken Navigationsbereich der App-Seite TLS/SSL-Einstellungen aus. Wählen Sie anschließend für Nur HTTPS die Option Ein.

Enforce HTTPS

Wenn der Vorgang abgeschlossen ist, navigieren Sie zu einer beliebigen HTTP-URL, die auf Ihre App verweist. Beispiel:

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

Erzwingen von TLS-Versionen

Ihre App lässt standardmäßig TLS 1.2 zu. Diese TLS-Version wird von Branchenstandards wie PCI-DSS empfohlen. Andere TLS-Versionen können wie folgt erzwungen werden:

Wählen Sie im linken Navigationsbereich der App-Seite TLS/SSL-Einstellungen aus. Wählen Sie dann unter TLS-Version die gewünschte TLS-Mindestversion aus. Diese Einstellung steuert nur eingehende Aufrufe.

Enforce TLS 1.1 or 1.2

Nach Abschluss des Vorgangs lehnt Ihre App alle Verbindungen mit niedrigerer TLS-Version ab.

Behandeln der TLS-Terminierung

In App Service erfolgt die TLS-Terminierung in den Modulen für den Netzwerklastenausgleich, sodass alle HTTPS-Anforderungen Ihre App unverschlüsselt erreichen. Wenn Ihre App-Logik überprüfen muss, ob Benutzeranforderungen verschlüsselt sind, können Sie dazu den Header X-Forwarded-Proto untersuchen.

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.

Automatisieren mit Skripts

Azure CLI

Binden eines benutzerdefinierten TLS-/SSL-Zertifikats an eine 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.
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 Ressourcen