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
).
Wymagania wstępne
- Przeprowadź skalowanie aplikacji usługi App Service w górę do jednej z obsługiwanych warstw cenowych: Podstawowa, Standardowa, Premium.
- Zamapuj nazwę domeny na aplikację lub kup ją i skonfiguruj na platformie Azure.
Dodawanie powiązania
W witrynie Azure Portal:
W menu po lewej stronie wybierz pozycję App Services app-name (Nazwa> aplikacji usługi App Services<>).
W obszarze nawigacji po lewej stronie aplikacji wybierz pozycję Domeny niestandardowe.
Obok domeny niestandardowej wybierz pozycję Dodaj powiązanie.
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.
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.
Podczas dodawania nowego certyfikatu zweryfikuj nowy certyfikat, wybierając pozycję Weryfikuj.
Wybierz Dodaj.
Po zakończeniu operacji stan TLS/SSL domeny niestandardowej zostanie zmieniony na Zabezpieczone.
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.net
usługą , ponownie zamapuj dowolne mapowanie rekordu CNAME, aby wskazywałosni.<app-name>.azurewebsites.net
zamiast tego. (Dodajsni
prefiks).
Testowanie protokołu HTTPS
Przejdź do https://<your.custom.domain>
w różnych przeglądarkach, aby sprawdzić, czy aplikacja jest wyświetlana.
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?
- Czy mogę wyłączyć wymuszone przekierowanie z protokołu HTTP do protokołu HTTPS?
- Jak mogę zmienić minimalne wersje protokołu TLS dla aplikacji?
- Jak mogę obsługiwać kończenie żądań protokołu TLS w usłudze App Service?
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:
- Przekaż nowy certyfikat.
- Powiąż nowy certyfikat z wybraną domeną niestandardową bez usuwania starego certyfikatu. Ta akcja zastępuje powiązanie zamiast usuwania go.
- 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