Zabezpečení vlastního názvu DNS pomocí vazby TLS/SSL v Azure App Service
V tomto článku se dozvíte, jak zabezpečit vlastní doménu v aplikaci App Service nebo aplikaci funkcí vytvořením vazby certifikátu. Až budete hotovi, budete mít přístup k aplikaci App Service na koncovém https://
bodu pro vlastní název DNS (například https://www.contoso.com
).
Požadavky
- Vertikálně navyšte kapacitu aplikace App Service na jednu z podporovaných cenových úrovní: Basic, Standard, Premium.
- Namapujte název domény na aplikaci nebo si ji kupte a nakonfigurujte v Azure.
1. Přidání vazby
V Azure Portal:
V nabídce vlevo vyberte App Services><app-name>.
V levém navigačním panelu aplikace vyberte Vlastní domény.
Vedle vlastní domény vyberte Přidat vazbu.
Pokud už vaše aplikace má certifikát pro vybranou vlastní doménu, můžete ho vybrat v části Certifikát. Pokud ne, musíte přidat certifikát pomocí některého z výběrů ve zdroji.
- Vytvoření spravovaného certifikátu App Service – Nechte App Service vytvořit spravovaný certifikát pro vybranou doménu. Tato možnost je nejjednodušší. Další informace najdete v tématu Vytvoření bezplatného spravovaného certifikátu.
- Import certifikátu App Service – V App Service Certifikátu zvolte certifikát App Service, který jste zakoupili pro vybranou doménu. Informace o zakoupení certifikátu App Service najdete v tématu Import certifikátu App Service.
- Nahrání certifikátu (.pfx) – postupujte podle pracovního postupu v tématu Nahrání privátního certifikátu a nahrajte certifikát PFX z místního počítače a zadejte heslo certifikátu.
- Import z Key Vault – Vyberte Vybrat certifikát trezoru klíčů a v dialogovém okně vyberte certifikát.
V části TYP TLS/SSL zvolte mezi SNI SSL a SSL založeným na PROTOKOLU IP.
- SNI SSL: Může být přidáno více vazeb SSL SNI. Tato možnost umožňuje více certifikátům TLS/SSL zabezpečit více domén na stejné IP adrese. Většina moderních prohlížečů (včetně Internet Exploreru, Chromu, Firefoxu a Opery) podporuje SNI (další informace najdete v tématu Indikace názvu serveru).
-
- Protokol SSL založený na PROTOKOLU IP: Může být přidána pouze jedna vazba PROTOKOLU SSL protokolu IP. Tato možnost umožňuje zabezpečit vyhrazenou veřejnou IP adresu pouze jedním certifikátem TLS/SSL. Po konfiguraci vazby postupujte podle kroků v části 2. Přemapovat záznamy pro protokol SSL založený na PROTOKOLU IP.
PROTOKOL SSL protokolu IP se podporuje jenom na úrovni Standard nebo vyšší.
- Protokol SSL založený na PROTOKOLU IP: Může být přidána pouze jedna vazba PROTOKOLU SSL protokolu IP. Tato možnost umožňuje zabezpečit vyhrazenou veřejnou IP adresu pouze jedním certifikátem TLS/SSL. Po konfiguraci vazby postupujte podle kroků v části 2. Přemapovat záznamy pro protokol SSL založený na PROTOKOLU IP.
Při přidávání nového certifikátu ověřte nový certifikát výběrem možnosti Ověřit.
Vyberte Přidat.
Po dokončení operace se stav TLS/SSL vlastní domény změní na Zabezpečené.
Poznámka
Stav Zabezpečení ve vlastních doménách znamená, že je zabezpečený certifikátem, ale App Service nekontroluje, jestli je certifikát podepsaný svým držitelem nebo jestli vypršela jeho platnost, což může způsobit, že se v prohlížečích zobrazí chyba nebo upozornění.
2. Přemapování záznamů pro PROTOKOL SSL na základě PROTOKOLU IP
Tento krok je potřeba jenom pro protokol SSL založený na PROTOKOLU IP. V případě vazby SSL SNI přejděte k části Testování HTTPS pro vaši vlastní doménu.
Je potřeba provést dvě změny, potenciálně:
Ve výchozím nastavení používá vaše aplikace sdílenou veřejnou IP adresu. Když vytvoříte vazbu certifikátu s protokolem SSL protokolu IP, App Service pro vaši aplikaci vytvoří novou vyhrazenou IP adresu. Pokud jste namapovali záznam A na svoji aplikaci, aktualizujte registr domény pomocí této nové vyhrazené IP adresy.
Stránka Vlastní doména vaší aplikace se aktualizuje o novou vyhrazenou IP adresu. Zkopírujte tuto IP adresu a pak přemapujte záznam A na tuto novou IP adresu.
Pokud máte vazbu SSL SNI na
<app-name>.azurewebsites.net
, přemapujte jakékoli mapování CNAME tak, aby místo toho odkazovaly nasni.<app-name>.azurewebsites.net
(přidejte předponusni
).
3. Testování HTTPS
V různých prohlížečích přejděte na adresu a https://<your.custom.domain>
ověřte, že aplikace obsluhuje vaši aplikaci.
Kód aplikace může protokol zkontrolovat prostřednictvím hlavičky x-appservice-proto. Hlavička má hodnotu http
nebo https
.
Poznámka
Pokud vaše aplikace zobrazí chyby ověření certifikátu, pravděpodobně používáte certifikát podepsaný svým držitelem.
Pokud to není váš případ, možná jste při exportování certifikátu do souboru PFX vynechali zprostředkující certifikáty.
Nejčastější dotazy
- Návody zajistit, aby se PŘI změnách vazby certifikátu nezměnila IP adresa aplikace?
- Můžu zakázat vynucené přesměrování z HTTP na HTTPS?
- Jak můžu změnit minimální verze protokolu TLS pro aplikaci?
- Návody zpracovávat ukončení protokolu TLS v App Service?
Návody zajistit, aby se PŘI změnách vazby certifikátu nezměnila IP adresa aplikace?
Vaše příchozí IP adresa se může při odstranění vazby změnit, a to i v případě, že je tato vazba IP SSL. To je zvlášť důležité, když obnovujete certifikát, který už je ve vazbě PROTOKOLU SSL protokolu IP. Pokud chcete zabránit změně IP adresy vaší aplikace IP, postupujte podle těchto kroků v uvedeném pořadí:
- Nahrajte nový certifikát.
- Vytvořte vazbu nového certifikátu k požadované vlastní doméně. Starý certifikát neodstraňujte. Tato akce nahradí tuto vazbu (místo aby odebrala vazbu původní).
- Odstraňte starý certifikát.
Můžu zakázat vynucené přesměrování z HTTP na HTTPS?
Ve výchozím nastavení App Service vynucuje přesměrování z požadavků HTTP na HTTPS. Pokud chcete toto chování zakázat, přečtěte si téma Konfigurace obecných nastavení.
Jak můžu změnit minimální verze protokolu TLS pro aplikaci?
Vaše aplikace ve výchozím nastavení povoluje protokol TLS 1.2, což je doporučená úroveň protokolu TLS z hlediska oborových standardů, například PCI DSS. Pokud chcete vynutit různé verze protokolu TLS, přečtěte si téma Konfigurace obecných nastavení.
Návody zpracovávat ukončení protokolu TLS v App Service?
V App Service dochází k ukončení protokolu TLS v nástrojích pro vyrovnávání zatížení sítě, takže všechny požadavky HTTPS dorazí do vaší aplikace jako nešifrované požadavky HTTP. Pokud logika aplikace potřebuje zkontrolovat, jestli jsou požadavky uživatelů šifrované, zkontrolujte hlavičku X-Forwarded-Proto
.
Průvodci konfigurací specifickou pro konkrétní jazyk, například průvodce konfigurací Node.js Linuxu , ukazují, jak v kódu aplikace rozpoznat relaci HTTPS.
Automatizace pomocí skriptů
Azure CLI
Vytvoření vazby vlastního certifikátu TLS/SSL k webové aplikaci
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