Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как обеспечить безопасность личного домена в приложении Служба приложений или приложении-функции путем создания привязки сертификата. Когда вы закончите, вы сможете получить доступ к приложению Службы приложений по конечной точке https://
для вашего настраиваемого DNS-имени (например, https://www.contoso.com
).
Предварительные условия
- Масштабируйте ваше приложение в Службе приложений до одной из поддерживаемых ценовых категорий: "Базовый", "Стандартный", "Премиум".
- Сопоставьте доменное имя с приложением или приобретите его и настройте его в Azure.
Добавьте привязку
В меню слева выберите Службы приложений><app-name>.
В левой области навигации приложения выберите "Личные домены".
Рядом с личным доменом нажмите кнопку "Добавить привязку".
Если у вашего приложения уже есть сертификат для выбранного личного домена, его можно выбрать в сертификате. В противном случае необходимо добавить сертификат с помощью одного из выбранных элементов в источнике.
- Создание управляемого сертификата службы приложений - Позвольте Службе приложений создать управляемый сертификат для выбранного домена. Это самый простой вариант. Дополнительные сведения см. в разделе "Создание бесплатного управляемого сертификата".
- Импорт сертификата службы приложений - В сертификатах службы приложений выберите сертификат службы приложений, который вы приобрели для выбранного домена.
- Отправка сертификата (PFX) — следуйте рабочему процессу при отправке закрытого сертификата , чтобы отправить сертификат PFX с локального компьютера и указать пароль сертификата.
- Импорт из Key Vault — выберите сертификат хранилища ключей и выберите сертификат в диалоговом окне.
В параметре тип TLS/SSL выберите либо SNI SSL, либо SSL, основанный на IP.
- SNI SSL: можно добавить несколько ssl-привязок SNI. Этот параметр позволяет нескольким TLS/SSL-сертификатам защитить несколько доменов в одном IP-адресе. Большинство современных браузеров (включая Microsoft Edge, Chrome, Firefox и Opera) поддерживают SNI. (Дополнительные сведения см. в разделе Указание имени сервера.)
-
SSL на основе IP: можно добавить только одну привязку SSL IP. Этот параметр позволяет использовать только один TLS/SSL-сертификат для защиты выделенного общедоступного IP-адреса. После настройки привязки выполните действия, описанные в переназначении записей для SSL на основе IP-адресов.
SSL на основе IP-адресов поддерживается только на уровне "Стандартный" или выше.
При добавлении нового сертификата проверьте новый сертификат, выбрав "Проверить".
Выберите Добавить.
После завершения операции состояние 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>
, чтобы убедиться, что ваше приложение отображается.
Код приложения может проверить протокол с помощью заголовка x-appservice-proto
. Заголовок имеет значение http
или https
.
Примечание.
Если приложение выдает ошибки проверки сертификата, вероятно, вы используете самозаверяющий сертификат.
Если это не так, возможно, вы оставили промежуточные сертификаты при экспорте сертификата в PFX-файл.
Часто задаваемые вопросы
- Как я могу убедиться, что IP-адрес приложения не изменится при изменении привязки сертификата?
- Можно ли отключить принудительное перенаправление с HTTP на HTTPS?
- Как изменить минимальные версии TLS для приложения?
- Как управлять завершением TLS в службе приложений?
Как мне убедиться, что IP-адрес приложения не изменится при внесении изменений в привязку сертификата?
Входящий IP-адрес может измениться после удаления привязки, даже если привязка сделана на базе SSL на основе IP. Это особенно важно при обновлении сертификата, который уже связан с привязкой SSL на основе IP. Чтобы избежать изменения IP-адреса приложения, выполните следующие действия.
- Передайте новый сертификат.
- Привяжите новый сертификат к пользовательскому домену, не удаляя старый сертификат. Таким действием вы заменяете привязку вместо удаления старой.
- Удалите старый сертификат.
Можно ли отключить принудительное перенаправление с HTTP на HTTPS?
По умолчанию Служба приложений принудительно перенаправляет http-запросы на HTTPS. Сведения об отключении этого поведения см. в разделе "Настройка общих параметров".
Как изменить минимальные версии TLS для приложения?
Приложение по умолчанию разрешает применение TLS версии 1.2, которая является рекомендуемой в соответствии с такими отраслевыми стандартами, как PCI DSS. Сведения о применении различных версий TLS см. в разделе "Настройка общих параметров".
Как выполнять завершение TLS в Службе приложений?
В Службе приложений терминирование TLS происходит в подсистеме балансировки нагрузки сети, поэтому все HTTPS-запросы достигают вашего приложения в виде незашифрованных HTTP-запросов. Если логика приложения должна проверить, шифруются ли запросы пользователей, проверьте X-Forwarded-Proto
заголовок.
Руководства по настройке для конкретных языков, такие как руководство по настройке Linux Node.js, показывают, как обнаружить HTTPS сеанс в коде вашего приложения.
Автоматизация с помощью сценариев
Azure CLI
Привязка пользовательского 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