Zabezpečení vlastního názvu DNS s vazbou TLS/SSL v Azure App Service

V tomto článku se dozvíte, jak zabezpečit vlastní doménu ve vaší aplikaci App Service nebo aplikaci Function App vytvořením vazby certifikátu. Až budete hotovi, můžete k aplikaci App Service přistupovat na https:// koncový bod pro vlastní název DNS (například https://www.contoso.com ).

Webová aplikace s vlastním certifikátem TLS/SSL

Zabezpečení vlastní domény s certifikátem se skládá ze dvou kroků:

V tomto kurzu se naučíte:

  • Upgrade cenové úrovně aplikace
  • Zabezpečení vlastní domény pomocí certifikátu
  • Vynucení protokolu HTTPS
  • Vynucení protokolu TLS 1.1/1.2
  • Automatizace správy protokolu TLS pomocí skriptů

Požadavky

Postup při použití tohoto průvodce:

Poznámka

Nejjednodušší způsob, jak přidat privátní certifikát, je vytvořit bezplatný App Service spravovaný certifikát.

Příprava webové aplikace

Pokud chcete vytvořit vlastní vazby TLS/SSL nebo povolit klientské certifikáty pro aplikaci App Service, musí být plán App Service na úrovni Basic, Standard, Premium nebo Isolated . V tomto kroku se ujistíte, že je vaše webová aplikace na podporované cenové úrovni.

Přihlášení k Azure

Otevřete Azure Portal.

Vyhledejte a vyberte App Services.

Vyberte App Services

Na stránce App Services vyberte název vaší webové aplikace.

Snímek obrazovky App Services stránky v Azure Portal zobrazující seznam všech spuštěných webových aplikací s první aplikací v seznamu, který je zvýrazněný.

Vyložili jste na stránce pro správu vaší webové aplikace.

Kontrola cenové úrovně

V levém navigačním panelu na stránce webové aplikace se posuňte do části Nastavení a vyberte Vertikálně navýšit kapacitu (plán služby App Service).

Nabídka Vertikálně navýšit kapacitu

Zkontrolujte, že vaše webová aplikace není na úrovni F1 nebo D1. Aktuální úroveň webové aplikace je zvýrazněná tmavě modrým rámečkem.

Kontrola cenové úrovně

Na úrovni F1 a D1 se nepodporuje vlastní SSL. Pokud potřebujete vertikálně navýšit kapacitu, postupujte podle kroků v další části. V opačném případě zavřete stránku horizontálního navýšení kapacity a přeskočte část navýšení kapacity schématu App Service .

Vertikální navýšení kapacity plánu služby App Service

Vyberte některou z placených úrovní (B1, B2, B3 nebo kteroukoli úroveň v kategorii Produkční). Další možnosti se zobrazí po kliknutí na odkaz Zobrazit další možnosti.

Klikněte na Použít.

Výběr cenové úrovně

Až se zobrazí následující oznámení, operace škálování je dokončená.

Oznámení vertikálního navýšení kapacity

Zabezpečení vlastní domény

Proveďte následující kroky:

V Azure Portalv nabídce vlevo vyberte App Services > <app-name> .

V levém navigačním panelu aplikace spusťte dialog vazby TLS/SSL :

  • Výběr vlastních domén > Přidání vazby
  • Výběr Nastavení TLS/SSL > Přidání vazby TLS/SSL

Přidat vazbu k doméně

V části vlastní doména vyberte vlastní doménu, pro kterou chcete přidat vazbu.

Pokud už vaše aplikace obsahuje certifikát pro vybranou vlastní doménu, pokračujte na vytvoření vazby přímo. V opačném případě pokračujte dál.

Přidat certifikát pro vlastní doménu

Pokud vaše aplikace nemá žádný certifikát pro vybranou vlastní doménu, máte dvě možnosti:

Poznámka

Můžete také vytvořit bezplatný certifikát nebo importovat certifikát Key Vault, ale musíte to udělat samostatně a pak se vrátit k dialogovému OKNU vazby TLS/SSL .

Vytvořit vazbu

Pomocí následující tabulky můžete nakonfigurovat vazbu TLS v dialogu vazby TLS/SSL a pak kliknout na Přidat vazbu.

Nastavení Popis
Vlastní doména Název domény, pro kterou chcete přidat vazbu TLS/SSL.
Kryptografický otisk privátního certifikátu Certifikát, který se má vytvořit.
Typ TLS/SSL
  • Sni SSL – přidat lze více vazeb sni SSL. Tato možnost umožňuje více certifikátů TLS/SSL zabezpečit více domén na stejné IP adrese. Většina moderních prohlížečů (včetně aplikací Internet Explorer, Chrome, Firefox a Opera) podporuje SNI (Další informace najdete v tématu indikace názvu serveru).
  • IP SSL – dá se přidat jenom jedna vazba IP SSL. Tato možnost povoluje pouze jeden certifikát TLS/SSL k zabezpečení vyhrazené veřejné IP adresy. Po nakonfigurování vazby postupujte podle kroků v části přemapování záznamů pro IP SSL.
    IP SSL se podporuje jenom na úrovni Standard nebo vyšší.

Po dokončení operace se stav TLS/SSL vlastní domény změní na zabezpečeno.

Vazba TLS/SSL byla úspěšná.

Poznámka

Zabezpečený stav 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 pokud vypršela jeho platnost, což může taky způsobit, že se v prohlížečích zobrazí chyba nebo upozornění.

Přemapování záznamů pro IP SSL

Pokud ve své aplikaci nepoužíváte IP SSL, přeskočte na test HTTPS pro vaši vlastní doménu.

K dispozici jsou dvě změny, které byste si měli udělat, možná:

  • Ve výchozím nastavení vaše aplikace používá sdílenou veřejnou IP adresu. Když svážete certifikát s IP SSL, App Service vytvoří novou vyhrazenou IP adresu pro vaši aplikaci. Pokud jste namapovali záznam A na svou aplikaci, aktualizujte svůj 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 SNI SSL k <app-name>.azurewebsites.net , přemapujte všechna mapování CNAME tak, aby odkazovala na sni.<app-name>.azurewebsites.net místo toho (přidejte sni předponu).

Test HTTPS

V různých prohlížečích vyhledejte a https://<your.custom.domain> Ověřte, jestli funguje v aplikaci.

Snímek obrazovky, který ukazuje příklad procházení k vlastní doméně s zvýrazněnou adresou URL contoso.com.

Kód aplikace může zkontrolovat protokol přes hlavičku "x-AppService-proto". Záhlaví bude mít hodnotu http nebo https .

Poznámka

Pokud vaše aplikace poskytuje chyby ověřování certifikátů, 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.

Zabránit změnám IP adres

Vaše příchozí IP adresa se může při odstranění vazby změnit, i když je tato vazba IP SSL. To je obzvláště důležité, když obnovujete certifikát, který je již ve IP SSL vazbě. Pokud chcete zabránit změně IP adresy vaší aplikace IP, postupujte podle těchto kroků v uvedeném pořadí:

  1. Nahrajte nový certifikát.
  2. 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í).
  3. Odstraňte starý certifikát.

Vynucení protokolu HTTPS

Ve výchozím nastavení může kdokoli k vaší aplikaci přistupovat pomocí protokolu HTTP. Všechny požadavky HTTP můžete přesměrovat na port HTTPS.

V levém navigačním panelu na stránce aplikace vyberte Nastavení TLS/SSL. Pak v části Pouze HTTPS vyberte Zapnuto.

Vynucení protokolu HTTPS

Po dokončení operace přejděte na jakoukoli adresu URL HTTP odkazující na vaši aplikaci. Příklad:

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

Vynucení verzí protokolu TLS

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 vynucovat jiné verze protokolu TLS, postupujte následovně:

V levém navigačním panelu na stránce aplikace vyberte Nastavení TLS/SSL. Pak v části Verze protokolu TLS vyberte minimální požadovanou verzi protokolu TLS. Toto nastavení řídí pouze příchozí volání.

Vynucení protokolu TLS 1.1 nebo 1.2

Po dokončení operace bude vaše aplikace odmítat všechna připojení využívající nižší verze protokolu TLS.

Zpracování ukončení protokolu TLS

V App Service dojde k ukončení protokolu TLS v nástrojích pro vyrovnávání zatížení sítě, takže všechny požadavky HTTPS dosáhnou vaší aplikace jako nešifrované požadavky HTTP. Pokud vaše logika aplikace potřebuje, aby zkontrolovala, jestli jsou požadavky uživatele zašifrované, zkontrolujte X-Forwarded-Proto záhlaví.

Průvodce konfigurací specifických pro konkrétní jazyk, například průvodce konfigurací Node.js Linuxu, vám ukáže, jak v kódu aplikace rozpoznat relaci HTTPS.

Obnovení vazby certifikátu

Poznámka

Pokud chcete obnovit App Service certifikátu, který jste zakoupili,podívejte se na export (App Service) certifikát. App Service certifikáty je možné automaticky obnovit a vazbu je možné automaticky synchronizovat.

Pokud chcete nahradit certifikát, u který vyprší platnost, může způsob aktualizace vazby certifikátu novým certifikátem nepříznivě ovlivnit uživatelské prostředí. Například příchozí IP adresa se může při odstranění vazby změnit, i když je tato vazba založená na protokolu IP. To je zvlášť důležité při obnovení certifikátu, který už vazbu založenou na protokolu IP má. Pokud se chcete vyhnout změně IP adresy vaší aplikace a zabránit výpadkům aplikace, postupujte podle těchto kroků v tomto pořadí:

  1. Nahrajte nový certifikát.
  2. Vytvořte vazbu nového certifikátu ke stejné vlastní doméně, aniž byste odstranili stávající (vypršející) certifikát. Tato akce nahradí vazbu místo odebrání existujícího certifikátu.
  3. Odstraňte existující certifikát.

Automatizace pomocí skriptů

Azure CLI

#!/bin/bash

fqdn=<replace-with-www.{yourdomain}>
pfxPath=<replace-with-path-to-your-.PFX-file>
pfxPassword=<replace-with-your=.PFX-password>
resourceGroup=myResourceGroup
webappname=mywebapp$RANDOM

# Create a resource group.
az group create --location westeurope --name $resourceGroup

# Create an App Service plan in Basic tier (minimum required by custom domains).
az appservice plan create --name $webappname --resource-group $resourceGroup --sku B1

# Create a web app.
az webapp create --name $webappname --resource-group $resourceGroup \
--plan $webappname

echo "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
read -p "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.

# Map your prepared custom domain name to the web app.
az webapp config hostname add --webapp-name $webappname --resource-group $resourceGroup \
--hostname $fqdn

# Upload the SSL certificate and get the thumbprint.
thumbprint=$(az webapp config ssl upload --certificate-file $pfxPath \
--certificate-password $pfxPassword --name $webappname --resource-group $resourceGroup \
--query thumbprint --output tsv)

# Binds the uploaded SSL certificate to the web app.
az webapp config ssl bind --certificate-thumbprint $thumbprint --ssl-type SNI \
--name $webappname --resource-group $resourceGroup

echo "You can now browse to https://$fqdn"

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

Další zdroje informací