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


Сертификаты и среда для приложений

Среда службы приложений — это развертывание Службы приложений Azure в виртуальной сети Azure. Ее можно развернуть с помощью доступной из Интернета конечной точки приложения или конечной точки приложения, которая находится в виртуальной сети. Развертывание среды службы приложений с конечной точкой, доступной в Интернете называется внешней средой службы приложений. Развертывание среды службы приложений с конечной точкой в виртуальной сети называется средой службы приложений с подсистемой балансировки нагрузки. Дополнительные сведения о среде службы приложений с подсистемой балансировки нагрузки приведены в документе Создание и использование среды службы приложений с подсистемой балансировки нагрузки.

сертификаты для приложений.

Приложения, размещенные в среде службы приложений, поддерживают следующие функции сертификатов, ориентированные на приложения, которые также доступны в мультитенантной службе приложений. Требования и инструкции для отправки этих сертификатов и управления ими приведены в руководстве Добавление сертификата TLS или SSL в Службе приложений Azure.

После добавления сертификата в приложение или приложение-функцию Службы приложений с его помощью можно защитить имя личного домена или использовать его в коде приложения.

Ограничения

Управляемые сертификаты службы приложений не поддерживаются в приложениях, размещенных в среде службы приложений.

Параметры протокола TLS

Вы можете настроить параметр TLS на уровне приложения.

Корневые сертификаты для сценариев частного клиента

Когда приложение выступает в качестве клиента, подключающегося к службам, защищенным с помощью сертификатов частного центра сертификации ( ЦС), необходимо добавить корневые сертификаты для установления доверия. Среда службы приложений версии 3 предоставляет два метода управления корневыми сертификатами:

  • API корневого сертификата (рекомендуется): управление на уровне среды для всех приложений
  • Сертификат частного клиента: конфигурация для каждого приложения с помощью параметров приложения

Выбор правильного метода

Метод Scope Используется, если Ограничения
API корневого сертификата Все приложения в среде службы приложений — управление несколькими приложениями, которым требуются одни и те же корневые сертификаты
— Требуется централизованное управление сертификатами
— вы развертываете новые среды с помощью инфраструктуры в виде кода
— требует остановки и запуска существующих приложений для получения новых сертификатов
— требуются средства API/CLI/IaC (недоступны на портале Azure в настоящее время)
Сертификат частного клиента Приложения в одном плане службы приложений — Для нескольких приложений требуются сертификаты.
— Вы предпочитаете конфигурацию на основе портала
— для разных приложений требуются разные корневые сертификаты
— только приложения кода Windows
— Необходимо настроить каждый план службы приложений отдельно
— Сертификаты, недоступные за пределами кода приложения (невозможно использовать для проверки подлинности реестра контейнеров или проверки протокола TLS внешнего интерфейса)

Общая рекомендация — использовать API корневого сертификата для новых развертываний и управлять сертификатами в нескольких приложениях. Она обеспечивает более высокую масштабируемость, поддержку автоматизации и работает как для приложений Windows, так и для Linux.

API корневого сертификата

API корневого сертификата позволяет программным способом добавлять корневые сертификаты в среду службы приложений версии 3, что делает их доступными для всех приложений во время запуска. Корневые сертификаты — это общедоступные сертификаты, которые определяют корневой центр сертификации (ЦС) и необходимы для установления доверия к безопасному обмену данными. Добавив корневые сертификаты в среду службы приложений, все приложения, размещенные в этой среде, устанавливают их в корневом хранилище, обеспечивая безопасное взаимодействие с внутренними службами или API, использующими сертификаты, выданные частными или корпоративными центрами сертификации.

Эта возможность доступна для приложений на основе Windows и Linux в среде службы приложений версии 3. Корневые сертификаты, добавленные через этот API, автоматически внедряются в хранилище доверия приложений при запуске, устраняя необходимость конфигураций каждого приложения и упрощая управление жизненным циклом сертификатов.

Важные замечания

  • Сертификаты можно добавить в среду службы приложений с помощью REST API, Azure CLI, шаблонов ARM, Bicep или Terraform.
  • Если вы добавите сертификат в среду службы приложений с существующими или запущенными приложениями, необходимо остановить и запустить каждое приложение для обновления хранилища сертификатов с новым корневым сертификатом. Перед созданием приложений рекомендуется добавить все сертификаты, чтобы исключить необходимость остановить и запустить приложения по отдельности.
    • Операции остановки и запуска отличаются от перезапуска приложения. Вы должны использовать выделенные команды остановки и запуска, доступные на портале Azure, Azure CLI или REST API.
    • Запуск и остановка приложений приводит к временным сбоям во время остановки приложений.
    • Если у вас несколько приложений и вы хотите автоматизировать этот процесс, можно использовать Azure CLI или REST API.
  • Во время процесса добавления сертификата необходимо указать все данные сертификата в запросе. Вы не можете напрямую отправить файл .cer .

Добавление корневого сертификата

Чтобы добавить корневой сертификат в среду службы приложений, используйте один из следующих методов:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{aseName}/publicCertificates/{certificateName}?api-version=2024-04-01

Content-Type: application/json

{
  "location": "{location}",
  "properties": {
    "blob": "{raw certificate blob}",
    "isRoot": true
  }
}

Замените следующие заполнители:

  • {subscriptionId}: идентификатор подписки Azure
  • {resourceGroupName}: группа ресурсов, содержащая среду службы приложений
  • {aseName}: имя среды службы приложений
  • {certificateName}: имя ресурса сертификата
  • {location}: регион Azure, в котором развернута среда службы приложений
  • {raw certificate blob}: необработанный BLOB-объект сертификата из корневого сертификата

Удаление корневого сертификата

Чтобы удалить корневой сертификат из среды службы приложений, выполните приведенные действия.

DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{aseName}/publicCertificates/{certificateName}?api-version=2024-04-01

Получение определенного сертификата

Чтобы получить определенный корневой сертификат из среды службы приложений, выполните указанные действия.

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{aseName}/publicCertificates/{certificateName}?api-version=2024-04-01

Получение всех общедоступных сертификатов

Чтобы получить все общедоступные сертификаты из среды службы приложений:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{aseName}/publicCertificates?api-version=2024-04-01

Остановка и запуск приложений

После добавления корневого сертификата в среду службы приложений с существующими приложениями необходимо остановить и запустить каждое приложение для обновления хранилища сертификатов.

  1. Перейдите к приложению на портале Azure.
  2. Выберите "Остановить " на странице обзора.
  3. Дождитесь завершения приложения.
  4. Нажмите кнопку "Пуск ", чтобы перезапустить приложение.

Сертификат частного клиента (конфигурация для каждого приложения)

Примечание.

Для большинства сценариев используйте API корневого сертификата вместо этого метода. API корневых сертификатов обеспечивает управление сертификатами на уровне среды для приложений Windows и Linux, в то время как этот метод ограничен приложениями кода Windows в рамках одного плана службы приложений.

Если необходимо настроить корневые сертификаты только для определенных приложений или использовать портал Azure, можно использовать метод сертификата частного клиента. Этот подход отправляет сертификаты в отдельные приложения и делает их доступными для приложений в одном плане службы приложений.

Это важно

Поддержка клиентских сертификатов осуществляется только с использованием пользовательского кода в приложениях Windows. Сертификаты частного клиента не поддерживаются за пределами приложения. Это ограничивает использование в таких сценариях, как извлечение образа контейнера приложения из реестра с помощью частного сертификата и TLS-проверка через внешние серверы с использованием частного сертификата.

Выполните следующие действия, чтобы передать сертификат (CER-файл) приложению в среде службы приложений. CER-файл можно экспортировать из сертификата. В конце статьи приведен пример PowerShell, который можно использовать для создания временного самозаверяющего сертификата в целях тестирования:

  1. Перейдите к приложению, которое требует сертификат на портале Azure

  2. Перейдите к сертификатам в приложении. Выберите Сертификат открытого ключа (.cer). Нажмите Добавить сертификат. Введите имя. Найдите и выберите ваш файл CER. Выберите "Загрузить".

  3. Скопируйте отпечаток.

  4. Перейдите к Конфигурация>Настройки приложения. Создайте параметр приложения WEBSITE_LOAD_ROOT_CERTIFICATES, указав отпечаток в качестве значения. Если у вас несколько сертификатов, можно поместить их в один параметр, разделив их запятыми без пробелов, например

    84EC242A4EC7957817B8E48913E50953552DAFA6,6A5C65DC9247F762FE17BF8D4906E04FE6B31819

Сертификат доступен всеми приложениями в том же плане службы приложений, что и приложение, которое настраивает этот параметр, но все приложения, зависящие от сертификата частного ЦС, должны иметь параметр приложения, настроенный для предотвращения проблем с временем.

Если необходимо, чтобы оно было доступно для приложений в другом плане Службы приложений, необходимо повторить операцию настройки приложения для приложений в этом плане Службы приложений. Чтобы проверить, что сертификат установлен, перейдите к консоли Kudu и отправьте следующую команду в отладочной консоли PowerShell:

dir Cert:\LocalMachine\Root

Чтобы выполнить тестирование, можно создать самозаверяющий сертификат и файл CER со следующей командой PowerShell.

$certificate = New-SelfSignedCertificate -CertStoreLocation "Cert:\LocalMachine\My" -DnsName "*.internal.contoso.com","*.scm.internal.contoso.com"

$certThumbprint = "Cert:\LocalMachine\My\" + $certificate.Thumbprint
$fileName = "exportedcert.cer"
Export-Certificate -Cert $certThumbprint -FilePath $fileName -Type CERT

Сертификат частного сервера (привязка TLS/SSL)

Примечание.

В этом разделе рассматриваются сертификаты сервера для привязок TLS/SSL, которые отличаются от корневых сертификатов, рассмотренных ранее. Сертификаты сервера используются для защиты личного домена приложения с помощью HTTPS, а корневые сертификаты устанавливают доверие для исходящих клиентских подключений.

Если приложение выступает в качестве сервера в модели клиентского сервера, либо за обратным прокси-сервером, либо непосредственно с частным клиентом, и вы используете частный сертификат ЦС, необходимо отправить сертификат сервера (PFX-файл ) с полной цепочкой сертификатов в приложение и привязать сертификат к личному домену. Поскольку инфраструктура выделена для вашей Среды службы приложений, в хранилище доверия серверов добавляется полная цепочка сертификатов. Необходимо загрузить сертификат только один раз, чтобы использовать его с приложениями, которые находятся в той же среде службы приложений.

Примечание.

При отправке сертификата до 1 октября 2023 г. необходимо повторно загрузить и повторно привязывать сертификат для полной цепочки сертификатов, добавляемой на серверы.

Следуйте учебному руководству по безопасной настройке домена с TLS/SSL, чтобы загрузить или привязать ваш корневой сертификат частного ЦС к приложению в среде службы приложений.

Следующие шаги