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

Voraussetzungen

1. Hinzufügen der Bindung

Im Azure-Portal:

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

  2. Wählen Sie im linken Navigationsbereich Ihrer App Benutzerdefinierte Domänenaus.

  3. Wählen Sie neben der benutzerdefinierten Domäne Bindung hinzufügen aus.

    A screenshot showing how to launch the Add TLS/SSL Binding dialog.

  4. Wenn Ihre App bereits über ein Zertifikat für die ausgewählte benutzerdefinierte Domäne verfügt, können Sie es in Zertifikat auswählen. Andernfalls müssen Sie ein Zertifikat mithilfe einer der Auswahloptionen in Quelle hinzufügen.

    • Von App Service verwaltetes Zertifikat erstellen: Lassen Sie App Service ein verwaltetes Zertifikat für Ihre ausgewählte Domäne erstellen. Diese Option ist die einfachste. Weitere Informationen finden Sie unter Erstellen eines kostenlosen verwalteten Zertifikats.
    • App Service Certificate importieren: Wählen Sie in App Service Certificate ein App Service-Zertifikat aus, das Sie für Ihre ausgewählte Domäne erworben haben.
    • Zertifikat hochladen (.pfx): Folgen Sie dem Workflow unter Hochladen eines privaten Zertifikats, um ein PFX-Zertifikat von Ihrem lokalen Computer hochzuladen und das Zertifikatkennwort anzugeben.
    • Aus Schlüsseltresor importieren: Wählen Sie Schlüsseltresorzertifikat auswählen aus, und wählen Sie das Zertifikat im Dialogfeld aus.
  5. Wählen Sie in TLS/SSL-Typ zwischen SNI SSL und IP-basiertes SSL aus.

    • 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-basiertes 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 2. Neuzuordnen von Datensätzen für IP-basiertes SSL aus.
        IP-SSL wird nur in der EbeneBasic oder höher unterstützt.
  6. Wenn Sie ein neues Zertifikat hinzufügen, überprüfen Sie das neue Zertifikat, indem Sie Überprüfen auswählen.

  7. Wählen Sie Hinzufügen.

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

    A screenshot showing the custom domain secured by a certificate binding.

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.

2. Neuzuordnen von Datensätzen für IP-basiertes SSL

Dieser Schritt ist nur für IP-basiertes SSL erforderlich. Fahren Sie für eine SNI SSL-Bindung mit Testen von HTTPS für Ihre benutzerdefinierte Domäne 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 erneut 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.)

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

Häufig gestellte Fragen

Wie kann ich sicherstellen, dass sich die IP-Adresse der App nicht ändert, wenn ich Änderungen an der Zertifikatbindung vornehme?

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.

Kann ich die erzwungene Umleitung von HTTP zu HTTPS deaktivieren?

Standardmäßig erzwingt App Service eine Umleitung von HTTP-Anforderungen an HTTPS. Informationen zum Deaktivieren dieses Verhaltens finden Sie unter Konfigurieren allgemeiner Einstellungen.

Wie kann ich die TLS-Mindestversionen für die App ändern?

Ihre App lässt standardmäßig TLS 1.2 zu. Diese TLS-Version wird von Branchenstandards wie PCI-DSS empfohlen. Informationen zum Erzwingen anderer TLS-Versionen finden Sie unter Konfigurieren allgemeiner Einstellungen.

Wie verarbeite ich den TLS-Abschluss in App Service?

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

Weitere Ressourcen