Поделиться через


Включение HTTPS для личного домена в Службе приложений Azure

В этой статье показано, как обеспечить безопасность личного домена в приложении службы приложений Azure или приложении-функции , создав привязку сертификата. По завершении вы можете получить доступ к приложению службы App Service в конечной точке https://, используя имя вашей пользовательской DNS. Примером является https://www.contoso.com.

Снимок экрана: веб-приложение с пользовательским СЕРТИФИКАТом TLS/SSL.

Предварительные условия

Добавьте привязку

На портале Azure

  1. На левой панели выберите Службы приложений><имя-приложения>.

  2. В левой области приложения выберите "Личные домены".

  3. Рядом с личным доменом нажмите кнопку "Добавить привязку".

    Снимок экрана: открытие диалогового окна

  4. Если у вашего приложения уже есть сертификат для выбранного личного домена, его можно выбрать в сертификате. В противном случае необходимо добавить сертификат с помощью одного из выбранных элементов в источнике:

    • Создание управляемого сертификата службы приложений: пусть служба приложений создает управляемый сертификат для выбранного домена. Это самый простой вариант. Дополнительные сведения см. в разделе "Создание бесплатного управляемого сертификата".
    • Импорт сертификата службы приложений. В сертификате службы приложений выберите сертификат службы приложений, приобретенный для выбранного домена.
    • Загрузить сертификат (PFX): Следуйте процессу загрузки закрытого сертификата, чтобы загрузить сертификат Personal Information Exchange (PFX) с вашего компьютера и укажите пароль сертификата.
    • Импорт из Key Vault: выберите сертификат хранилища ключей и выберите сертификат в диалоговом окне.
  5. В типе TLS/SSL выберите либо SSL с поддержкой SNI, либо SSL, основанный на IP:

    • SSL SNI: можно добавить несколько привязок протокола SSL для указания имени сервера (SNI). Этот параметр позволяет нескольким СЕРТИФИКАТАм TLS/SSL защитить несколько доменов в одном IP-адресе. Большинство современных браузеров (включая Microsoft Edge, Chrome, Firefox и Opera) поддерживают SNI. (Дополнительные сведения см. в разделе Указание имени сервера.)
    • SSL на основе IP: Вы можете добавить только одну привязку SSL для IP-адреса. Этот параметр позволяет использовать только один TLS/SSL-сертификат для защиты выделенного общедоступного IP-адреса. После настройки привязки выполните действия, описанные в переназначении записей для SSL на основе IP-адресов. SSL на основе IP-адресов поддерживается только на уровне "Стандартный" или выше.
  6. При добавлении нового сертификата выберите "Проверить ", чтобы проверить новый сертификат.

  7. Выберите Добавить.

    После завершения операции состояние TLS/SSL личного домена изменяется на Secured.

    Снимок экрана: личный домен, защищенный привязкой сертификата.

    Защищенное состояние в пользовательских доменах означает, что сертификат обеспечивает безопасность. Служба приложений не проверяет, является ли сертификат самозаверяющим или истекшим сроком действия, что также может привести к возникновению ошибки или предупреждения в браузерах.

Переназначьте записи для SSL на основе IP-адресов

Этот шаг необходим только для SSL на основе IP-адресов. Для привязки SSL SNI перейдите к разделу Test HTTPS.

Возможны два изменения, которые необходимо внести:

  • По умолчанию приложение использует общий общедоступный IP-адрес. После привязки сертификата с помощью SSL на основе IP Служба приложений создает выделенный IP-адрес для вашего приложения. Если с приложением сопоставлена запись A, обновите реестр домена, указав этот новый выделенный IP-адрес.

    Страница Личный домен вашего приложения обновлена новым выделенным IP-адресом. Скопируйте этот IP-адрес, а затем переназначьте запись A на новый IP-адрес.

  • Если у вас есть привязка SNI SSL к <app-name>.azurewebsites.net, перенастройте любое сопоставление CNAME, чтобы указать на sni.<app-name>.azurewebsites.net вместо этого. (Добавьте sni префикс.)

Тестирование HTTPS

В различных браузерах перейдите на https://<your.custom.domain>, чтобы убедиться, что ваше приложение отображается.

Снимок экрана, показывающий пример перехода на ваш пользовательский домен. URL-адрес contoso.com выделен.

Код приложения может проверить протокол с помощью заголовка x-appservice-proto . Заголовок имеет значение http или https.

Если приложение выдает ошибки проверки сертификата, вероятно, вы используете самозаверяющий сертификат. Если это не так, вы, вероятно, оставили промежуточные сертификаты при экспорте сертификата в PFX-файл.

Часто задаваемые вопросы

Как мне убедиться, что IP-адрес приложения не изменится при внесении изменений в привязку сертификата?

Входящий IP-адрес может измениться после удаления привязки, даже если привязка сделана на базе SSL на основе IP. Это особенно важно при продлении сертификата, который уже находится в привязке SSL IP. Чтобы избежать изменения IP-адреса приложения, выполните следующие действия.

  1. Передайте новый сертификат.
  2. Привязите новый сертификат к пользовательскому домену, который требуется без удаления старого. Таким действием вы заменяете привязку вместо удаления старой.
  3. Удалите старый сертификат.

Можно ли отключить принудительное перенаправление с HTTP на HTTPS?

По умолчанию Служба приложений принудительно перенаправляет http-запросы на HTTPS. Сведения об отключении этого поведения см. в разделе "Настройка общих параметров".

Как изменить минимальные версии TLS для приложения?

Приложение по умолчанию разрешает TLS 1.2. Отраслевые стандарты, такие как PCI DSS , рекомендуют этот уровень TLS. Сведения о применении различных версий TLS см. в разделе "Настройка общих параметров".

Как выполнять завершение TLS в Службе приложений?

В Службе приложений терминирование TLS происходит в подсистеме балансировки нагрузки сети, поэтому все HTTPS-запросы достигают вашего приложения в виде незашифрованных HTTP-запросов. Если логика приложения должна проверить, шифруются ли запросы пользователей, проверьте X-Forwarded-Proto заголовок.

Руководства по настройке для конкретных языков, такие как руководство по настройке Linux Node.js, показывают, как обнаружить HTTPS сеанс в коде вашего приложения.

Автоматизация с помощью сценариев

Azure CLI (Интерфейс командной строки для Azure)

Привязка пользовательского TLS/SSL-сертификата к веб-приложению

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