Включение связи HTTPS в Azure Облачные службы (расширенная поддержка)
Статья
Обмен данными с Облачные службы Microsoft Azure (расширенная поддержка) выполняется с помощью протокола HTTPS. В этой статье описывается, как включить связь HTTPS для Облачные службы (расширенная поддержка).
Средство непрерывной интеграции и непрерывной доставки (CI/CD), например Azure DevOps
Независимо от метода развертывания общие шаги развертывания одинаковы.
Первые два этих шага необходимы для всех методов развертывания. Эти действия рассматриваются в разделе "Изменения кода". Остальные шаги также важны, но они не всегда требуют ручного вмешательства пользователя. Например, шаги могут выполняться автоматически средством, например Visual Studio. Последние три этих шага рассматриваются в разделе изменений конфигурации.
Изменения в коде
Чтобы внести изменения в код для подготовки сертификата и настройки проекта, сделайте следующее:
В файле конфигурации службы (CSCFG) проекта добавьте отпечаток сертификата в роль, в которой требуется использовать сертификат. Например, если вы хотите использовать сертификат в качестве SSL-сертификата для взаимодействия с WebRole, можно добавить XML-код, похожий на следующий фрагмент кода в WebRole1 качестве первого дочернего элемента корневого ServiceConfiguration элемента:
Имя сертификата можно настроить, но оно должно соответствовать имени сертификата, используемого в файле определения службы (CSDEF).
В файле определения службы (CSDEF) добавьте следующие элементы.
Родительский XPath
Элементы для добавления
Атрибуты для использования
/ServiceDefinition/WebRole/Sites/Site/Bindings
Binding
name, endpointName
/ServiceDefinition/WebRole/Endpoints
InputEndpoint
имя, протокол, порт, сертификат
/ServiceDefinition/WebRole
Certificates/Certificate
name, storeLocation, storeName, permissionLevel
Элемент Certificates должен быть добавлен непосредственно после закрывающего Endpoints тега. Он не содержит атрибутов. Он содержит только дочерние Certificate элементы.
Например, файл определения службы может выглядеть следующим XML-кодом:
В этом примере файл определения службы изменяется для привязки входной конечной точки HttpsIn протокола HTTPS через порт 443. Он использует Certificate1 сертификат для хранилища с именем My и расположением только для ограниченного или повышенного LocalMachine уровня разрешений. Имена сертификатов в элементах InputEndpointCertificate совпадают друг с другом. Они также соответствуют имени сертификата, который использовался в файле конфигурации службы (CSCFG) на предыдущем шаге.
Изменения конфигурации
Инструкции по изменению конфигурации облачной службы отличаются в зависимости от способа развертывания облачной службы. Эти инструкции показаны на следующих вкладках. Каждая вкладка представляет другой метод развертывания.
Отправьте созданный пакет службы (project-name.cspkg>) и файлы конфигурации облачной службы (<ServiceConfiguration.Cloud.cscfg) в контейнер учетной записи хранения для облачной службы.
Примечание.
Кроме того, необходимо отправить файл определения службы (ServiceDefinition.csdef), используя тот же процесс, который описан для других двух файлов.
Создайте URL-адрес подписанного URL-адреса для каждого отправленного файла.
В портал Azure вернитесь на страницу обзора облачной службы и нажмите кнопку "Обновить".
На странице "Обновление облачной службы " на вкладке "Основные сведения " внесите следующие изменения:
В поле "Расположение пакета/конфигурации/службы" выберите "Из большого двоичного объекта".
В поле Отправка пакета (CSPKG, .zip) выполните следующие действия:
Выберите ссылку "Обзор ".
Выберите учетную запись хранения и контейнер, в который были отправлены файлы.
На странице контейнера выберите соответствующий файл (в данном случае <— имя> проекта.cspkg), а затем нажмите кнопку "Выбрать ".
Для поля "Отправка конфигурации" (CSCFG) (и Файла ServiceConfiguration.Cloud.cscfg) повторите подпросезону, описанную на предыдущем шаге.
Для поля Upload a service definition (.csdef) (and ServiceDefinition.csdef file) повторите подпросезону еще раз.
Перейдите на вкладку Конфигурация.
В поле хранилища ключей выберите хранилище ключей, в котором вы отправили сертификат (ранее в разделе "Изменения кода"). После того как сертификат найден в выбранном хранилище ключей, указанный сертификат отображает состояние найденного.
Чтобы развернуть только что настроенный проект, нажмите кнопку "Обновить ".
Отправьте созданный файл пакета службы (<project-name.cspkg>) в контейнер учетной записи хранения для облачной службы.
Примечание.
Несмотря на то, что указано в инструкциях, вам не нужно отправлять файл конфигурации облачной службы (ServiceConfiguration.Cloud.cscfg). Только файл пакета службы должен быть отправлен здесь.
В следующем скрипте PowerShell замените заполнители в начале скрипта фактическими значениями для каждой переменной, а затем запустите скрипт для обновления облачной службы:
Отправьте созданный пакет службы (project-name.cspkg>) и файлы конфигурации облачной службы (<ServiceConfiguration.Cloud.cscfg) в контейнер учетной записи хранения для облачной службы.
Создайте URL-адрес подписанного URL-адреса для каждого отправленного файла.
Получите следующие значения на странице сертификата хранилища ключей в портал Azure:
URL-адрес сертификата хранилища ключей
ИД подписки
Имя группы ресурсов, в которой развернуто хранилище ключей
Имя службы для хранилища ключей
Найдите osProfile свойство в исходном шаблоне ARM для облачной службы. Если исходный проект облачной службы поддерживает только http-связь, osProfile свойство пусто ("osProfile": {}). Чтобы облачная служба получите правильный сертификат из правильного хранилища ключей, укажите, какое хранилище ключей необходимо использовать в шаблоне ARM. Этот параметр можно использовать для представления этого значения. Кроме того, можно жестко закодировать значение в шаблон ARM, как показано в следующем примере:
В тексте JSON шаблона id ARM значение параметра sourceVault является частью URL-адреса страницы Key Vault в портал Azure. Значением certificateUrl является URL-адрес сертификата хранилища ключей, который вы нашли ранее. Текстовые форматы для этих значений показаны в следующей таблице.
Разверните обновленный шаблон ARM, содержащий новые параметры, такие как маркер SAS пакета, маркер SAS конфигурации и многое другое. Чтобы узнать, как объявить и указать эти параметры, можно просмотреть пример файла шаблона ARM и пример файла параметров шаблона ARM. Затем дождитесь завершения развертывания.
Примечание.
Если появится сообщение об ошибке, указывающее, что используется общедоступный IP-адрес, удалите общедоступный IP-адрес из файла конфигурации службы (CSCFG) и файла параметров шаблона ARM. Не удаляйте объявление общедоступного IP-адреса из самого файла шаблона ARM.
В этом разделе описывается, как использовать пакет SDK Azure и C# для внесения правильных изменений конфигурации. Чтобы успешно использовать пакет SDK для развертывания проекта облачной службы и изменения связанной конфигурации, необходимо зарегистрировать приложение в идентификаторе Microsoft Entra. Сведения о регистрации см. на портале, чтобы создать приложение Microsoft Entra и субъект-службу, которые могут получить доступ к ресурсам . В следующей таблице описаны конкретные шаги, которые необходимо предпринять, и соответствующий подраздел для чтения в этой статье.
Настройте политику доступа для хранилища ключей и предоставьте приложению разрешение (по крайней мере на уровне чтения), чтобы получить доступ к сертификату.
Отправьте созданный файл пакета службы (<project-name.cspkg>) в контейнер учетной записи хранения для облачной службы.
Примечание.
Несмотря на то, что указано в инструкциях, вам не нужно отправлять файл конфигурации облачной службы (ServiceConfiguration.Cloud.cscfg). Только файл пакета службы должен быть отправлен здесь.
Откройте файл SDKSample\CreateCloudService\CreateCloudService\LoginHelper.cs в текстовом редакторе. В методе InitializeServiceClient перезапись значений tenantIdпеременных , clientIdа также clientCredentials строковых переменных со значениями идентификатора клиента, идентификатора приложения и секрета приложения соответственно. Эти значения являются теми, которые вы скопировали при регистрации приложения.
Откройте файл SDKSample\CreateCloudService\CreateCloudService\Program.cs в текстовом редакторе. В методе Main перезапись некоторых инициализированных значений переменных, объявленных в начале метода. В следующей таблице показаны имена переменных и значения, которые необходимо использовать для них.
Имя переменной
Новое значение
m_subId
Идентификатор подписки, содержащей облачную службу
csrgName
Имя группы ресурсов, содержащей облачную службу
csName
Имя ресурса облачной службы
kvrgName
Имя группы ресурсов, содержащей ресурс хранилища ключей
kvName
Имя ресурса хранилища ключей
kvsubid
Идентификатор подписки, содержащей хранилище ключей (это может отличаться от идентификатора подписки облачной службы).
secretidentifier
URL-адрес сертификата хранилища ключей
filename
Локальный путь к файлу конфигурации службы (ServiceConfiguration.Cloud.cscfg)
packageurl
URL-адрес SAS для файла пакета службы (<project-name.cspkg>)
В области Обозреватель решений Visual Studio щелкните правой кнопкой мыши узел проекта и выберите пункт "Управление пакетами NuGet". На вкладке "Обзор" найдите, выберите и установите следующие пакеты:
Microsoft.Azure.Management.ResourceManager
Microsoft.Azure.Management.Compute
Microsoft.Azure.Management.Storage
Azure.Identity
Microsoft.Rest.ClientRuntime.Azure.Authentication
Запустите проект, а затем подождите, пока сообщения будут отображаться на панели вывода . Если в области отображается "выход с кодом 0", обновление и развертывание должно работать успешно. Если отображается сообщение "выход с кодом 1", может потребоваться проверить наличие сообщений об ошибках для просмотра любых проблем.
В Visual Studio необходимо внести два изменения конфигурации. Настройте конфигурацию службы таким образом, чтобы локальный контекст был выровнен с облачным контекстом, а затем укажите расположение хранилища ключей.
Для конфигурации службы скопируйте содержимое облачного контекста (файл ServiceConfiguration.Cloud.cscfg) и вставьте их в локальный контекст (файл ServiceConfiguration.Local.cscfg). У вас есть другая конфигурация или вам по-прежнему нужен локальный файл конфигурации для других использования? Если любое условие имеет значение true, сохраните certificate элементы из существующего локального контекста.
В области Обозреватель решений Visual Studio щелкните правой кнопкой мыши узел проекта и выберите "Опубликовать". Перейдите к мастеру публикации приложение Azure, пока не перейдете на вкладку "Параметры". На этой вкладке задайте для поля хранилища ключей расположение, в котором сохраняется хранилище ключей. Наконец, нажмите кнопку "Опубликовать ", а затем дождитесь завершения развертывания.
После внесения изменений конфигурации клиенты смогут взаимодействовать с веб-сайтом облачных служб с помощью протокола HTTPS. Если сертификат самозаверяется, браузер может сообщить о том, что сертификат не защищен, но браузер не блокирует подключение.