Udostępnij za pośrednictwem


Włączanie protokołu HTTPS dla domeny niestandardowej w usłudze Azure App Service

W tym artykule pokazano, jak zapewnić zabezpieczenia dla domeny niestandardowej w aplikacji Azure App Service lub aplikacji funkcji poprzez 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 systemu nazw domen (DNS). Przykładem jest https://www.contoso.com.

Zrzut ekranu przedstawiający aplikację internetową z niestandardowym certyfikatem TLS/SSL.

Wymagania wstępne

Dodaj powiązanie

W witrynie Azure Portal:

  1. W okienku po lewej stronie wybierz App Services><>.

  2. W lewym okienku aplikacji wybierz pozycję Domeny niestandardowe.

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

    Zrzut ekranu przedstawiający sposób otwierania 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 obszarze Źródło:

    • Utwórz zarządzany certyfikat dla usługi App Service: Pozwól usłudze App Service utworzyć zarządzany certyfikat 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 Przekazywanie certyfikatu prywatnego , aby przekazać certyfikat wymiany informacji osobistych (PFX) z komputera lokalnego i określ hasło certyfikatu.
    • Importuj z usługi Key Vault: wybierz opcję Wybierz certyfikat z Key Vault 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ń Indykacji Nazwy Serwera (SNI) SSL. Ta opcja pozwala na użycie wielu certyfikatów TLS/SSL do zabezpieczenia 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 użycie tylko jednego certyfikatu TLS/SSL, aby zabezpieczyć dedykowany publiczny adres IP. 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. Po dodaniu nowego certyfikatu wybierz pozycję Weryfikuj , aby zweryfikować nowy certyfikat.

  7. Wybierz Dodaj.

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

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

    Stan Zabezpieczony w domenach niestandardowych oznacza, że certyfikat zapewnia zabezpieczenia. Usługa App Service nie sprawdza, czy certyfikat jest z podpisem własnym 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 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 przypisano rekord A do Twojej aplikacji, zaktualizuj rejestr domen, używając 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.net, przekieruj dowolne mapowanie rekordu CNAME tak, aby wskazywało na 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.

Jeśli Twoja aplikacja wyświetla błędy walidacji certyfikatu, prawdopodobnie używasz certyfikatu z podpisem własnym. Jeśli tak nie jest, prawdopodobnie pominięto certyfikaty pośrednie 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. To zachowanie jest szczególnie ważne podczas odnawiania certyfikatu, który znajduje się już w powiązaniu SSL IP. Aby uniknąć zmiany adresu IP aplikacji, wykonaj następujące kroki:

  1. Przekaż nowy certyfikat.
  2. Powiąż nowy certyfikat z odpowiednią domeną niestandardową bez usuwania starego certyfikatu. Ta akcja zastępuje powiązanie, zamiast usuwać stare.
  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 zezwala na protokół TLS 1.2. Standardy branżowe, takie jak PCI DSS, zalecają ten poziom protokołu TLS. Aby wymusić różne wersje protokołu TLS, zobacz Konfigurowanie ustawień ogólnych.

Jak obsłużyć terminację 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