Zabezpiecz niestandardową nazwę DNS z powiązaniem TLS/SSL w Azure App ServiceSecure a custom DNS name with a TLS/SSL binding in Azure App Service

W tym artykule pokazano, jak zabezpieczyć domenę niestandardową w aplikacji App Service lub aplikacji funkcji przez utworzenie powiązania certyfikatu.This article shows you how to secure the custom domain in your App Service app or function app by creating a certificate binding. Po zakończeniu możesz uzyskać dostęp do aplikacji App Service w https:// punkcie końcowym dla NIESTANDARDOWEJ nazwy DNS (na przykład https://www.contoso.com).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).

Aplikacja internetowa z niestandardowym certyfikatem TLS/SSL

Zabezpieczanie domeny niestandardowej za pomocą certyfikatu obejmuje dwie czynności:Securing a custom domain with a certificate involves two steps:

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:In this tutorial, you learn how to:

  • Uaktualnienie warstwy cenowej aplikacjiUpgrade your app's pricing tier
  • Zabezpieczanie domeny niestandardowej przy użyciu certyfikatuSecure a custom domain with a certificate
  • Wymuszanie protokołu HTTPSEnforce HTTPS
  • Wymuszanie protokołu TLS 1.1/1.2Enforce TLS 1.1/1.2
  • Automatyzacja zarządzania protokołami TLS za pomocą skryptówAutomate TLS management with scripts

Wymagania wstępnePrerequisites

Aby wykonać następujące czynności:To follow this how-to guide:

Uwaga

Najprostszym sposobem dodawania certyfikatu prywatnego jest utworzenie bezpłatnego App Service certyfikatu zarządzanego (wersja zapoznawcza).The easiest way to add a private certificate is to create a free App Service Managed Certificate (Preview).

Przygotowywanie aplikacji internetowejPrepare your web app

Aby utworzyć niestandardowe powiązania zabezpieczeń lub włączyć certyfikaty klienta dla aplikacji App Service, plan App Service musi znajdować się w warstwie podstawowa, standardowa, Premiumlub izolowana .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. W tym kroku musisz się upewnić, że Twoja aplikacja internetowa jest w obsługiwanej warstwie cenowej.In this step, you make sure that your web app is in the supported pricing tier.

Logowanie do platformy AzureSign in to Azure

Otwórz witrynę Azure Portal.Open the Azure portal.

Wyszukaj i wybierz App Services.Search for and select App Services.

Wybierz App Services

Na stronie App Services wybierz nazwę aplikacji sieci Web.On the App Services page, select the name of your web app.

Nawigacja w portalu do aplikacji platformy Azure

Na stronie Zarządzanie aplikacji sieci Web.You have landed on the management page of your web app.

Sprawdzanie warstwy cenowejCheck the pricing tier

W lewym obszarze nawigacji na stronie Twojej aplikacji internetowej przewiń do sekcji Ustawienia i wybierz pozycję Skaluj w górę (plan usługi App Service).In the left-hand navigation of your web app page, scroll to the Settings section and select Scale up (App Service plan).

Menu skalowania w górę

Upewnij się, że Twoja aplikacja internetowa nie znajduje się w warstwie F1 ani D1.Check to make sure that your web app is not in the F1 or D1 tier. Bieżąca warstwa Twojej aplikacji internetowej jest wyróżniona ciemnoniebieskim polem.Your web app's current tier is highlighted by a dark blue box.

Sprawdzanie warstwy cenowej

Niestandardowy protokół SSL nie jest obsługiwany w warstwie F1 ani D1.Custom SSL is not supported in the F1 or D1 tier. Jeśli musisz skalować w górę, wykonaj kroki opisane w następnej sekcji.If you need to scale up, follow the steps in the next section. W przeciwnym razie zamknij stronę Skalowanie w górę i przejdź do sekcji Skalowanie w górę planu usługi App Service.Otherwise, close the Scale up page and skip the Scale up your App Service plan section.

Skalowanie w górę planu usługi App ServiceScale up your App Service plan

Wybierz jedną z płatnych warstw (B1, B2, B3 lub dowolną warstwę z kategorii Produkcja).Select any of the non-free tiers (B1, B2, B3, or any tier in the Production category). Aby uzyskać dodatkowe opcje, kliknij pozycję Wyświetl dodatkowe opcje.For additional options, click See additional options.

Kliknij przycisk Zastosuj.Click Apply.

Wybieranie warstwy cenowej

Wyświetlenie następującego powiadomienia oznacza zakończenie operacji skalowania.When you see the following notification, the scale operation is complete.

Powiadomienie o skalowaniu w górę

Zabezpieczanie domeny niestandardowejSecure a custom domain

Wykonaj następujące czynności:Do the following steps:

W Azure Portalz menu po lewej stronie wybierz pozycję App Services > <App-Name>.In the Azure portal, from the left menu, select App Services > <app-name>.

W lewym panelu nawigacyjnym aplikacji Uruchom okno dialogowe powiązania protokołu TLS/SSL , wykonując następujące działania:From the left navigation of your app, start the TLS/SSL Binding dialog by:

  • Wybieranie domen > niestandardowychDodawanie powiązaniaSelecting Custom domains > Add binding
  • > Wybieranie *ustawień protokołu TLS/SS\L***Dodawanie powiązania TLS/SSLSelecting TLS/SSL settings > Add TLS/SSL binding

Dodawanie powiązania do domeny

W polu domena niestandardowawybierz domenę niestandardową, dla której chcesz dodać powiązanie.In Custom Domain, select the custom domain you want to add a binding for.

Jeśli aplikacja ma już certyfikat dla wybranej domeny niestandardowej, przejdź do pozycji Utwórz powiązanie bezpośrednio.If your app already has a certificate for the selected custom domain, go to Create binding directly. W przeciwnym razie Kontynuuj.Otherwise, keep going.

Dodaj certyfikat dla domeny niestandardowejAdd a certificate for custom domain

Jeśli aplikacja nie ma certyfikatu dla wybranej domeny niestandardowej, dostępne są dwie opcje:If your app has no certificate for the selected custom domain, then you have two options:

Uwaga

Możesz również utworzyć bezpłatny certyfikat (wersja zapoznawcza) lub zaimportować certyfikat Key Vault, ale należy to zrobić oddzielnie, a następnie powrócić do okna dialogowego powiązania protokołu TLS/SSL .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.

Utwórz powiązanieCreate binding

Skorzystaj z poniższej tabeli, aby skonfigurować powiązanie protokołu TLS w oknie dialogowym powiązanie protokołu TLS/SSL , a następnie kliknij przycisk Dodaj powiązanie.Use the following table to help you configure the TLS binding in the TLS/SSL Binding dialog, then click Add Binding.

UstawienieSetting OpisDescription
Domena niestandardowaCustom domain Nazwa domeny, dla której ma zostać dodane powiązanie protokołu TLS/SSL.The domain name to add the TLS/SSL binding for.
Odcisk palca certyfikatu prywatnegoPrivate Certificate Thumbprint Certyfikat do powiązania.The certificate to bind.
Typ protokołu TLS/SSLTLS/SSL Type
  • SNI SSL — można dodać wiele SNI SSL powiązań.SNI SSL - Multiple SNI SSL bindings may be added. Ta opcja umożliwia wielu certyfikatom protokołu TLS/SSL zabezpieczenie wielu domen na tym samym adresie IP.This option allows multiple TLS/SSL certificates to secure multiple domains on the same IP address. Większość nowoczesnych przeglądarek (w tym Internet Explorer, Chrome, Firefox i Opera) obsługuje SNI (Aby uzyskać więcej informacji, zobacz oznaczanie nazwy serwera).Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (for more information, see Server Name Indication).
  • Połączenie SSL z adresu IP — można dodać tylko jedno powiązanie połączenie SSL z adresu IP.IP SSL - Only one IP SSL binding may be added. Ta opcja zezwala na zabezpieczenie dedykowanego publicznego adresu IP tylko jednemu certyfikatowi TLS/SSL.This option allows only one TLS/SSL certificate to secure a dedicated public IP address. Po skonfigurowaniu powiązania postępuj zgodnie z instrukcjami w sekcji ponowne Mapowanie rekordów dla połączenie SSL z adresu IP.After you configure the binding, follow the steps in Remap records for IP SSL.
    Połączenie SSL z adresu IP jest obsługiwana tylko w warstwie standardowa lub wyższej.IP SSL is supported only in Standard tier or above.

Po zakończeniu operacji stan protokołu TLS/SSL domeny niestandardowej zostanie zmieniony na bezpieczny.Once the operation is complete, the custom domain's TLS/SSL state is changed to Secure.

Powiązanie protokołu TLS/SSL powiodło się

Uwaga

Bezpiecznym stanem w domenach niestandardowych jest zabezpieczenie certyfikatu, ale App Service nie sprawdza, czy certyfikat ma podpis własny lub wygasł, na przykład może spowodować, że przeglądarki wyświetlają błąd lub ostrzeżenie.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.

Ponowne mapowanie rekordów dla Połączenie SSL z adresu IPRemap records for IP SSL

Jeśli nie używasz Połączenie SSL z adresu IP w aplikacji, przejdź do testowania protokołu HTTPS dla domeny niestandardowej.If you don't use IP SSL in your app, skip to Test HTTPS for your custom domain.

Istnieją dwie zmiany, które należy wprowadzić, potencjalnie:There are two changes you need to make, potentially:

  • Domyślnie aplikacja używa udostępnionego publicznego adresu IP.By default, your app uses a shared public IP address. Po powiązaniu certyfikatu z Połączenie SSL z adresu IP, App Service tworzy nowy, dedykowany adres IP dla aplikacji.When you bind a certificate with IP SSL, App Service creates a new, dedicated IP address for your app. Jeśli rekord A został zmapowany do aplikacji, należy zaktualizować rejestr domeny za pomocą tego nowego, dedykowanego adresu IP.If you mapped an A record to your app, update your domain registry with this new, dedicated IP address.

    Strona Domena niestandardowa Twojej aplikacji zostanie zaktualizowana za pomocą nowego, dedykowanego adresu IP.Your app's Custom domain page is updated with the new, dedicated IP address. Skopiuj ten adres IP, a następnie ponownie mapuj rekord A na ten nowy adres IP.Copy this IP address, then remap the A record to this new IP address.

  • Jeśli masz powiązanie SNI SSL z, ponownie <app-name>.azurewebsites.net zamapuj każde mapowanie CNAME na punkt sni.<app-name>.azurewebsites.net zamiast tego (Dodaj sni prefiks).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).

Testowanie protokołu HTTPSTest HTTPS

W różnych przeglądarkach przejdź do https://<your.custom.domain> , aby sprawdzić, czy program obsługuje aplikację.In various browsers, browse to https://<your.custom.domain> to verify that it serves up your app.

Nawigacja w portalu do aplikacji platformy Azure

Kod aplikacji może sprawdzić protokół za pośrednictwem nagłówka "x-appService-proto".Your application code can inspect the protocol via the "x-appservice-proto" header. Nagłówek będzie miał wartość http lub. httpsThe header will have a value of http or https.

Uwaga

Jeśli Twoja aplikacja wyświetla błędy walidacji certyfikatu, prawdopodobnie używasz certyfikatu z podpisem własnym.If your app gives you certificate validation errors, you're probably using a self-signed certificate.

Jeśli tak nie jest, certyfikaty pośrednie mogły zostać pominięte podczas eksportowania certyfikatu do pliku PFX.If that's not the case, you may have left out intermediate certificates when you export your certificate to the PFX file.

Zapobiegaj zmianom adresów IPPrevent IP changes

Adres IP ruchu przychodzącego może ulec zmianie po usunięciu powiązania, nawet jeśli to powiązanie jest Połączenie SSL z adresu IP.Your inbound IP address can change when you delete a binding, even if that binding is IP SSL. Jest to szczególnie ważne w przypadku odnowienia certyfikatu, który znajduje się już w powiązaniu Połączenie SSL z adresu IP.This is especially important when you renew a certificate that's already in an IP SSL binding. Aby uniknąć zmian w adresie IP aplikacji, wykonaj kolejno następujące kroki:To avoid a change in your app's IP address, follow these steps in order:

  1. Przekaż nowy certyfikat.Upload the new certificate.
  2. Powiąż nowy certyfikat z wybraną domeną niestandardową bez usuwania starego certyfikatu.Bind the new certificate to the custom domain you want without deleting the old one. Ta akcja zastępuje powiązanie zamiast usuwania go.This action replaces the binding instead of removing the old one.
  3. Usuń stary certyfikat.Delete the old certificate.

Wymuszanie protokołu HTTPSEnforce HTTPS

Domyślnie każda osoba nadal może uzyskać dostęp do Twojej aplikacji przy użyciu protokołu HTTP.By default, anyone can still access your app using HTTP. Możesz przekierować wszystkie żądania HTTP do portu HTTPS.You can redirect all HTTP requests to the HTTPS port.

Na stronie aplikacji w obszarze nawigacji po lewej stronie wybierz pozycję Ustawienia protokołu SSL.In your app page, in the left navigation, select SSL settings. Następnie w pozycji Tylko HTTPS wybierz opcję Włączone.Then, in HTTPS Only, select On.

Wymuszanie protokołu HTTPS

Po zakończeniu operacji przejdź do dowolnego adresu URL protokołu HTTP, który wskazuje Twoją aplikację.When the operation is complete, navigate to any of the HTTP URLs that point to your app. Przykład:For example:

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

Wymuszanie wersji protokołu TLSEnforce TLS versions

Aplikacja domyślnie umożliwia korzystanie z protokołu TLS 1.2, który jest zalecanym poziomem protokołu TLS przez standardy branżowe, takie jak PCI DSS.Your app allows TLS 1.2 by default, which is the recommended TLS level by industry standards, such as PCI DSS. Aby wymusić inne wersje protokołu TLS, wykonaj następujące kroki:To enforce different TLS versions, follow these steps:

Na stronie aplikacji w obszarze nawigacji po lewej stronie wybierz pozycję Ustawienia protokołu SSL.In your app page, in the left navigation, select SSL settings. Następnie w obszarze wersji protokołu TLS wybierz minimalną wersję protokołu TLS do użycia.Then, in TLS version, select the minimum TLS version you want. To ustawienie kontroluje tylko wywołania przychodzące.This setting controls the inbound calls only.

Wymuszanie protokołu TLS 1.1 lub 1.2

Po ukończeniu operacji aplikacja odrzuca wszystkie połączenia z niższymi wersjami protokołu TLS.When the operation is complete, your app rejects all connections with lower TLS versions.

Obsługa zakończenia protokołu TLSHandle TLS termination

W App Service wygaśnięcie protokołu TLS odbywa się w modułach równoważenia obciążenia sieciowego, więc wszystkie żądania HTTPS docierają do aplikacji jako nieszyfrowane żądania HTTP.In App Service, TLS termination happens at the network load balancers, so all HTTPS requests reach your app as unencrypted HTTP requests. Jeśli logika aplikacji musi sprawdzać, czy żądania użytkownika są szyfrowane, czy nie, zbadaj nagłówek X-Forwarded-Proto.If your app logic needs to check if the user requests are encrypted or not, inspect the X-Forwarded-Proto header.

Wskazówki dotyczące konfiguracji specyficzne dla języka, takie jak przewodnik konfiguracji Node. js systemu Linux , przedstawiają sposób wykrywania sesji HTTPS w kodzie aplikacji.Language specific configuration guides, such as the Linux Node.js configuration guide, shows you how to detect an HTTPS session in your application code.

Automatyzowanie przy użyciu skryptówAutomate with scripts

Interfejs wiersza polecenia platformy AzureAzure 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

Więcej zasobówMore resources