Zabezpieczanie niestandardowej nazwy DNS za pomocą powiązania TLS/SSL w Azure App Service

W tym artykule pokazano, jak zabezpieczyć domenę niestandardową w aplikacji App Service lub aplikacji funkcji przez utworzenie powiązania certyfikatu. Po zakończeniu możesz uzyskać dostęp do aplikacji App Service w punkcie końcowym niestandardowej https:// nazwy DNS (na przykład https://www.contoso.com).

Aplikacja internetowa z niestandardowym certyfikatem TLS/SSL

Zabezpieczanie domeny niestandardowej przy użyciu certyfikatu obejmuje dwa kroki:

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Uaktualnienie warstwy cenowej aplikacji
  • Zabezpieczanie domeny niestandardowej przy użyciu certyfikatu
  • Wymuszanie protokołu HTTPS
  • Wymuszanie protokołu TLS 1.1/1.2
  • Automatyzacja zarządzania protokołami TLS za pomocą skryptów

Wymagania wstępne

Aby postępować zgodnie z instrukcjami:

Uwaga

Najprostszym sposobem dodania certyfikatu prywatnego jest utworzenie bezpłatnego certyfikatu zarządzanego App Service.

Przygotowywanie aplikacji internetowej

Aby utworzyć niestandardowe powiązania TLS/SSL lub włączyć certyfikaty klienta dla aplikacji App Service, twój plan App Service musi znajdować się w warstwie Podstawowa, Standardowa, Premium lub Izolowana. Aby upewnić się, że aplikacja internetowa znajduje się w obsługiwanej warstwie cenowej, wykonaj następujące kroki:

Przejdź do aplikacji internetowej

  1. W polu wyszukiwania Azure Portal znajdź i wybierz pozycję App Services.

    Zrzut ekranu przedstawiający wybrane Azure Portal, pole wyszukiwania i pozycję

  2. Na stronie Usługi App Services wybierz nazwę aplikacji internetowej.

    Zrzut ekranu strony usługi App Services w Azure Portal przedstawiający listę wszystkich uruchomionych aplikacji internetowych z wyróżnioną pierwszą aplikacją na liście.

    Jesteś teraz na stronie zarządzania aplikacją internetową.

Sprawdzanie warstwy cenowej

  1. W menu po lewej stronie aplikacji internetowej w sekcji Ustawienia wybierz pozycję Skaluj w górę (plan App Service).

    Zrzut ekranu przedstawiający menu aplikacji internetowej, sekcję

  2. Upewnij się, że aplikacja internetowa nie znajduje się w warstwie F1 lub D1 , która nie obsługuje niestandardowego protokołu TLS/SSL.

    Bieżąca warstwa Twojej aplikacji internetowej jest wyróżniona ciemnoniebieskim polem.

    Zrzut ekranu przedstawiający informacje o warstwie cenowej aplikacji internetowej.

  3. Jeśli musisz skalować w górę, wykonaj kroki opisane w następnej sekcji. W przeciwnym razie zamknij stronę Skalowanie w górę i pomiń sekcję Skalowanie w górę planu App Service.

Skalowanie w górę planu usługi App Service

  1. Wybierz dowolną warstwę inną niż bezpłatna, taką jak B1, B2, B3 lub dowolna inna warstwa w kategorii Produkcja. Aby uzyskać więcej opcji, wybierz pozycję Zobacz dodatkowe opcje.

  2. Gdy wszystko będzie gotowe, wybierz pozycję Zastosuj.

    Zrzut ekranu przedstawiający wybraną warstwę cenową i pozycję

    Po wyświetleniu następującego komunikatu operacja skalowania została zakończona.

    Zrzut ekranu z komunikatem potwierdzającym operację skalowania w górę.

Zabezpieczanie domeny niestandardowej

Wykonaj następujące czynności:

W Azure Portal z menu po lewej stronie wybierz pozycjęNazwa> aplikacji usługi App Services<>.

Po lewej stronie nawigacji aplikacji uruchom okno dialogowe Powiązania PROTOKOŁU TLS/SSL , wykonując następujące polecenie:

  • Wybieranie domen >niestandardowychDodaj powiązanie
  • Wybieranie ustawień >protokołu TLS/SSLDodawanie powiązania PROTOKOŁU TLS/SSL

Dodawanie powiązania do domeny

W Custom Domain wybierz domenę niestandardową, dla której chcesz dodać powiązanie.

Jeśli aplikacja ma już certyfikat dla wybranej domeny niestandardowej, przejdź bezpośrednio do pozycji Utwórz powiązanie . W przeciwnym razie, kontynuuj.

Dodawanie certyfikatu dla domeny niestandardowej

Jeśli aplikacja nie ma certyfikatu dla wybranej domeny niestandardowej, masz dwie opcje:

Uwaga

Możesz również utworzyć bezpłatny certyfikat lub zaimportować certyfikat Key Vault, ale należy to zrobić oddzielnie, a następnie powrócić do okna dialogowego Powiązanie TLS/SSL.

Tworzenie powiązania

Poniższa tabela ułatwia skonfigurowanie powiązania TLS w oknie dialogowym Powiązanie PROTOKOŁU TLS/SSL , a następnie kliknij przycisk Dodaj powiązanie.

Ustawienie Opis
Domena niestandardowa Nazwa domeny do dodania powiązania TLS/SSL.
Odcisk palca certyfikatu prywatnego Certyfikat do powiązania.
Typ protokołu TLS/SSL
  • SNI SSL — można dodać wiele powiązań SSL SNI. Ta opcja umożliwia zabezpieczanie wielu domen na tym samym adresie IP wielu certyfikatów TLS/SSL. Większość nowoczesnych przeglądarek (w tym Internet Explorer, Chrome, Firefox i Opera) obsługuje SNI (aby uzyskać więcej informacji, zobacz Wskazanie nazwy serwera).
  • Protokół SSL protokołu IP — można dodać tylko jedno powiązanie PROTOKOŁU SSL ip. Ta opcja umożliwia zabezpieczanie dedykowanego publicznego adresu IP tylko jednego certyfikatu TLS/SSL. Po skonfigurowaniu powiązania wykonaj kroki opisane w temacie Ponowne mapowanie rekordów dla protokołu IP SSL.
    Protokół IP SSL jest obsługiwany tylko w warstwie Standardowa lub nowszej.

Po zakończeniu operacji stan PROTOKOŁU TLS/SSL domeny niestandardowej zostanie zmieniony na Bezpieczny.

Powiązanie TLS/SSL powiodło się

Uwaga

Bezpieczny stan w domenach niestandardowych oznacza, że jest zabezpieczony za pomocą certyfikatu, ale App Service nie sprawdza, czy certyfikat jest podpisany samodzielnie lub wygasł, co może również spowodować, że przeglądarki będą wyświetlać błąd lub ostrzeżenie.

Ponowne mapowanie rekordów dla protokołu SSL ip

Jeśli nie używasz protokołu IP SSL w aplikacji, przejdź do sekcji Testowanie protokołu HTTPS dla domeny niestandardowej.

Istnieją dwie zmiany, które należy wprowadzić, potencjalnie:

  • Domyślnie aplikacja używa udostępnionego publicznego adresu IP. Po powiązaniu certyfikatu z protokołem IP SSL App Service tworzy nowy, dedykowany adres IP dla aplikacji. Jeśli rekord A został zamapowany na aplikację, zaktualizuj rejestr domen przy użyciu tego nowego, dedykowanego adresu IP.

    Strona Domena niestandardowa Twojej aplikacji zostanie zaktualizowana za pomocą nowego, dedykowanego adresu IP. Skopiuj ten adres IP, a następnie ponownie mapuj rekord A na ten nowy adres IP.

  • Jeśli masz powiązanie SSL SNI z <app-name>.azurewebsites.net, ponownie zamapujsni dowolne mapowanie CNAME, aby wskazać sni.<app-name>.azurewebsites.net zamiast tego (dodaj prefiks).

Testowanie protokołu HTTPS

W różnych przeglądarkach przejdź do https://<your.custom.domain> strony , aby sprawdzić, czy obsługuje aplikację.

Zrzut ekranu przedstawiający przykład przeglądania domeny niestandardowej z wyróżnionym adresem URL contoso.com.

Kod aplikacji może sprawdzić protokół za pomocą nagłówka "x-appservice-proto". Nagłówek będzie miał wartość http lub https.

Uwaga

Jeśli Twoja aplikacja wyświetla błędy walidacji certyfikatu, prawdopodobnie używasz certyfikatu z podpisem własnym.

Jeśli tak nie jest, certyfikaty pośrednie mogły zostać pominięte podczas eksportowania certyfikatu do pliku PFX.

Zapobieganie zmianom adresów IP

Adres IP dla ruchu przychodzącego może ulec zmianie po usunięciu powiązania, nawet jeśli to powiązanie jest protokołem IP SSL. Jest to szczególnie ważne w przypadku odnawiania certyfikatu, który znajduje się już w powiązaniu PROTOKOŁU SSL protokołu IP. Aby uniknąć zmian w adresie IP aplikacji, wykonaj kolejno następujące kroki:

  1. Przekaż nowy certyfikat.
  2. Powiąż nowy certyfikat z wybraną domeną niestandardową bez usuwania starego certyfikatu. Ta akcja zastępuje powiązanie zamiast usuwania go.
  3. Usuń stary certyfikat.

Wymuszanie protokołu HTTPS

Na stronie aplikacji w obszarze nawigacji po lewej stronie wybierz pozycję Ustawienia protokołu TLS/SSL. Następnie w pozycji Tylko HTTPS wybierz opcję Włączone.

W przypadku wybrania opcji Tylko https, opcja Wyłączone oznacza, że każdy może nadal uzyskiwać dostęp do aplikacji przy użyciu protokołu HTTP. Możesz przekierować wszystkie żądania HTTP do portu HTTPS, wybierając pozycję Włączone.

Wymuszanie protokołu HTTPS

Po zakończeniu operacji przejdź do dowolnego adresu URL protokołu HTTP, który wskazuje Twoją aplikację. Przykład:

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

Wymuszanie wersji protokołu TLS

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. Aby wymusić inne wersje protokołu TLS, wykonaj następujące kroki:

Na stronie aplikacji w obszarze nawigacji po lewej stronie wybierz pozycję Ustawienia protokołu TLS/SSL. Następnie w obszarze wersji protokołu TLS wybierz minimalną wersję protokołu TLS do użycia. To ustawienie kontroluje tylko wywołania przychodzące.

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.

Obsługa kończenia żądań protokołu TLS

W App Service zakończenie protokołu TLS odbywa się w modułach równoważenia obciążenia sieciowego, więc wszystkie żądania HTTPS docierają do aplikacji jako niezaszyfrowane żądania HTTP. Jeśli logika aplikacji musi sprawdzać, czy żądania użytkownika są szyfrowane, czy nie, zbadaj nagłówek X-Forwarded-Proto.

Przewodniki konfiguracyjne specyficzne dla języka, takie jak przewodnik konfiguracji Node.js systemu Linux , pokazują, jak wykryć sesję HTTPS w kodzie aplikacji.

Automatyzowanie przy użyciu skryptów

Interfejs wiersza polecenia platformy Azure

Wiązanie niestandardowego certyfikatu TLS/SSL z aplikacją internetową

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

Więcej zasobów