Udostępnij za pośrednictwem


Zapewnianie zabezpieczeń niestandardowej nazwy DNS z powiązaniem TLS/SSL w usłudze App Service

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

Aplikacja internetowa z niestandardowym certyfikatem TLS/SSL.

Wymagania wstępne

Dodawanie powiązania

W witrynie Azure Portal:

  1. W menu po lewej stronie wybierz pozycję App Services app-name (Nazwa> aplikacji usługi App Services<>).

  2. W obszarze nawigacji po lewej stronie aplikacji wybierz pozycję Domeny niestandardowe.

  3. Obok domeny niestandardowej wybierz pozycję Dodaj powiązanie.

    Zrzut ekranu przedstawiający sposób uruchamiania okna dialogowego Dodawanie powiązania TLS/SSL.

  4. Jeśli aplikacja ma już certyfikat dla wybranej domeny niestandardowej, możesz wybrać go w obszarze Certyfikat. Jeśli nie, musisz dodać certyfikat przy użyciu jednej z opcji w polu Źródło.

    • Tworzenie zarządzanego certyfikatu usługi App Service — umożliwia usłudze App Service utworzenie zarządzanego certyfikatu dla wybranej domeny. Ta opcja jest najłatwiejsza. Aby uzyskać więcej informacji, zobacz Tworzenie bezpłatnego certyfikatu zarządzanego.
    • Zaimportuj certyfikat usługi App Service — w obszarze Certyfikat usługi App Service wybierz certyfikat usługi App Service zakupiony dla wybranej domeny.
    • Przekaż certyfikat (pfx) — postępuj zgodnie z przepływem pracy w sekcji Przekaż certyfikat prywatny, aby przekazać certyfikat PFX z komputera lokalnego i określić hasło certyfikatu.
    • Importuj z usługi Key Vault — wybierz pozycję Wybierz certyfikat magazynu kluczy i wybierz certyfikat w oknie dialogowym.
  5. W polu Typ protokołu TLS/SSL wybierz protokół SSL SNI lub protokół SSL oparty na protokole IP.

    • SNI SSL: można dodać wiele powiązań SSL SNI. Ta opcja umożliwia wielu certyfikatom TLS/SSL zabezpieczanie wielu domen na tym samym adresie IP. Większość nowoczesnych przeglądarek (w tym Przeglądarki Microsoft Edge, Chrome, Firefox i Opera) obsługuje interfejs SNI. (Aby uzyskać więcej informacji, zobacz Wskazanie nazwy serwera).
    • Protokół SSL oparty na protokole IP: można dodać tylko jedno powiązanie SSL ip. Ta opcja umożliwia zabezpieczenie dedykowanego publicznego adresu IP tylko jednego certyfikatu TLS/SSL. Po skonfigurowaniu powiązania wykonaj kroki opisane w artykule Ponowne mapowanie rekordów dla protokołu SSL opartego na protokole IP.
      Protokół SSL oparty na protokole IP jest obsługiwany tylko w warstwie Standardowa lub wyższej.
  6. Podczas dodawania nowego certyfikatu zweryfikuj nowy certyfikat, wybierając pozycję Weryfikuj.

  7. Wybierz Dodaj.

    Po zakończeniu operacji stan TLS/SSL domeny niestandardowej zostanie zmieniony na Zabezpieczone.

    Zrzut ekranu przedstawiający domenę niestandardową zabezpieczoną przez powiązanie certyfikatu.

Uwaga

Stan Zabezpieczony w domenach niestandardowych oznacza, że certyfikat zapewnia zabezpieczenia, ale usługa App Service nie sprawdza, czy certyfikat jest z podpisem własnym lub wygasł, na przykład może to spowodować, że przeglądarki będą wyświetlać błąd lub ostrzeżenie.

Ponowne mapowanie rekordów dla protokołu SSL opartego na protokole IP

Ten krok jest wymagany tylko w przypadku protokołu SSL opartego na protokole IP. W przypadku powiązania SNI SSL przejdź do sekcji Testowanie protokołu HTTPS.

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

  • Domyślnie aplikacja używa udostępnionego publicznego adresu IP. Po powiązaniu certyfikatu z protokołem IP SSL usługa 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 zamapuj rekord A na ten nowy adres IP.

  • Jeśli masz powiązanie SSL SNI z <app-name>.azurewebsites.netusługą , ponownie zamapuj dowolne mapowanie rekordu CNAME, aby wskazywało sni.<app-name>.azurewebsites.net zamiast tego. (Dodaj sni prefiks).

Testowanie protokołu HTTPS

Przejdź do https://<your.custom.domain> w różnych przeglądarkach, aby sprawdzić, czy aplikacja jest wyświetlana.

Zrzut ekranu przedstawiający przykład przeglądania domeny niestandardowej. Adres URL contoso.com został wyróżniony.

Kod aplikacji może sprawdzić protokół za pomocą nagłówka x-appservice-proto . Nagłówek ma 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, być może certyfikaty pośrednie zostały pominięte podczas eksportowania certyfikatu do pliku PFX.

Często zadawane pytania

Jak mogę upewnić się, że adres IP aplikacji nie zmienia się po wprowadzeniu zmian w powiązaniu certyfikatu?

Przychodzący adres IP 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 jest już w powiązaniu SSL ip. Aby uniknąć zmiany adresu IP aplikacji, wykonaj następujące kroki w następującej kolejności:

  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.

Czy mogę wyłączyć wymuszone przekierowanie z protokołu HTTP do protokołu HTTPS?

Domyślnie usługa App Service wymusza przekierowanie z żądań HTTP do protokołu HTTPS. Aby wyłączyć to zachowanie, zobacz Konfigurowanie ustawień ogólnych.

Jak mogę zmienić minimalne wersje protokołu TLS dla aplikacji?

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ć różne wersje protokołu TLS, zobacz Konfigurowanie ustawień ogólnych.

Jak mogę obsługiwać kończenie żądań protokołu TLS w usłudze App Service?

W usłudze 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 sprawdzić, czy żądania użytkownika są szyfrowane, sprawdź X-Forwarded-Proto nagłówek.

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