Включение обмена данными по протоколу HTTPS в Azure Облачные службы (расширенная поддержка)
Статья
Взаимодействие с Облачные службы Microsoft Azure (расширенная поддержка) осуществляется с помощью протокола HTTPS. В этой статье описывается, как включить обмен данными по протоколу HTTPS для Облачные службы (расширенная поддержка).
Средство непрерывной интеграции и непрерывной поставки (CI/CD), например Azure DevOps
Независимо от метода развертывания общие шаги развертывания совпадают.
Первые два из этих шагов необходимы для всех методов развертывания. Эти шаги рассматриваются в разделе Изменения кода . Остальные шаги также важны, но они не всегда требуют вмешательства пользователя вручную. Например, эти действия могут выполняться автоматически с помощью такого средства, как Visual Studio. Последние три из этих шагов рассматриваются в разделе Изменения конфигурации .
Изменения кода
Чтобы внести изменения в код для подготовки сертификата и настройки проекта, сделайте следующее:
В cscfg-файле конфигурации службы проекта добавьте отпечаток сертификата в роль, в которой вы хотите использовать сертификат. Например, если вы хотите использовать сертификат в качестве SSL-сертификата для взаимодействия с WebRole, можно добавить XML-код, похожий на следующий фрагмент кода для WebRole1 , в качестве первого дочернего элемента корневого ServiceConfiguration элемента:
Элемент Certificates должен быть добавлен непосредственно после закрывающего Endpoints тега. Он не содержит атрибутов. Он содержит только дочерние Certificate элементы.
Например, файл определения службы может выглядеть так:
В этом примере файл определения службы изменяется для привязки входной конечной HttpsIn точки для протокола HTTPS через порт 443. Он использует Certificate1 сертификат для хранилища с именем My и расположением для только ограниченного или повышенного LocalMachine уровня разрешений. Имена сертификатов в элементах InputEndpoint и Certificate соответствуют друг другу. Они также соответствуют имени сертификата, который использовался в файле конфигурации службы (CSCFG-файл) на предыдущем шаге.
Изменения конфигурации
Инструкции по изменению конфигурации облачной службы различаются в зависимости от способа развертывания облачной службы. Эти инструкции отображаются на следующих вкладках. Каждая вкладка представляет разные методы развертывания.
Отправьте файлы созданного пакета службы (<project-name.cspkg>) и конфигурации облачной службы (ServiceConfiguration.Cloud.cscfg) в контейнер учетной записи хранения для облачной службы.
Примечание.
Вам также потребуется отправить файл определения службы (ServiceDefinition.csdef), используя тот же процесс, который описан для двух других файлов.
Создайте URL-адрес подписанного URL-адреса подписанного URL-адреса url-адреса подписанного URL-адреса (SAS) для каждого отправленного файла.
В портал Azure вернитесь на страницу Обзор облачной службы и выберите Обновить.
На странице Обновление облачной службы внесите следующие изменения на вкладке Основные сведения :
В поле Расположение пакета, конфигурации или службы выберите Из BLOB-объекта.
В поле Отправка пакета (CSPKG, .zip) выполните следующие действия.
Щелкните ссылку Обзор .
Выберите учетную запись хранения и контейнер, в который вы отправили файлы.
На странице контейнера выберите соответствующий файл (в данном случае <project-name.cspkg>) и нажмите кнопку Выбрать.
Для поля Отправка конфигурации (CSCFG) (и файла ServiceConfiguration.Cloud.cscfg ) повторите подзадачи, описанные на предыдущем шаге.
Для поля Отправка определения службы (CSDEF) (и файла ServiceDefinition.csdef ) повторите подпроцедуру еще раз.
Перейдите на вкладку Конфигурация .
В поле Хранилище ключей выберите хранилище ключей, в которое вы отправили сертификат (ранее в разделе Изменения кода ). После того как сертификат будет найден в выбранном хранилище ключей, в указанном сертификате отобразится состояниеНайдено.
Чтобы развернуть только что настроенный проект, нажмите кнопку Обновить .
Отправьте созданный пакет службы (<project-name.cspkg>) в контейнер учетной записи хранения для облачной службы.
Примечание.
Несмотря на то, что указано в инструкциях, вам не нужно отправлять файл конфигурации облачной службы (ServiceConfiguration.Cloud.cscfg). Сюда необходимо отправить только файл пакета службы.
В следующем сценарии PowerShell замените заполнители в начале сценария фактическими значениями для каждой переменной, а затем запустите скрипт, чтобы обновить облачную службу:
Отправьте файлы созданного пакета службы (<project-name.cspkg>) и конфигурации облачной службы (ServiceConfiguration.Cloud.cscfg) в контейнер учетной записи хранения для облачной службы.
Создайте URL-адрес подписанного URL-адреса подписанного URL-адреса url-адреса подписанного URL-адреса (SAS) для каждого отправленного файла.
Получите следующие значения на странице сертификата хранилища ключей в портал Azure:
URL-адрес сертификата хранилища ключей
Идентификатор подписки
Имя группы ресурсов, в которой развернуто хранилище ключей
Имя службы для хранилища ключей
В исходном шаблоне ARM для облачной службы найдите osProfile свойство . Если исходный проект облачной службы поддерживает только обмен данными по протоколу 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.
В этом разделе описывается, как использовать пакет Azure SDK и C# для внесения правильных изменений в конфигурацию. Чтобы успешно использовать пакет SDK для развертывания проекта облачной службы и изменения связанной конфигурации, необходимо зарегистрировать приложение в Microsoft Entra ID. Сведения о регистрации см. в статье Использование портала для создания Microsoft Entra приложения и субъекта-службы, которые могут получить доступ к ресурсам. В следующей таблице описаны конкретные шаги, которые необходимо выполнить, и соответствующий подраздел, который будет прочитан в этой статье.
Шаг
Ссылка на подраздел
Назначение своей подписке роли владельца приложения
Настройте политику доступа для хранилища ключей и предоставьте приложению разрешение (по крайней мере уровня чтения), чтобы получить доступ к сертификату.
Отправьте созданный пакет службы (<project-name.cspkg>) в контейнер учетной записи хранения для облачной службы.
Примечание.
Несмотря на то, что указано в инструкциях, вам не нужно отправлять файл конфигурации облачной службы (ServiceConfiguration.Cloud.cscfg). Сюда необходимо отправить только файл пакета службы.
Получите следующие значения на странице сертификата хранилища ключей в портал Azure:
URL-адрес сертификата хранилища ключей
Идентификатор подписки
Имя группы ресурсов, в которой развернуто хранилище ключей
Имя службы для хранилища ключей
Скачайте пример проекта (сжатый архивный файл) и извлеките его содержимое.
Откройте файл SDKSample\CreateCloudService\CreateCloudService\LoginHelper.cs в текстовом редакторе. В методе InitializeServiceClient перезапишите значения строковых tenantIdпеременных , clientId, и clientCredentials значениями идентификатора клиента, идентификатора приложения и секрета приложения соответственно. Эти значения были скопированы при регистрации приложения.
Откройте файл SDKSample\CreateCloudService\CreateCloudService\Program.cs в текстовом редакторе. В методе Main перезапишите некоторые инициализированные значения переменных, объявленных в начале метода . В следующей таблице показаны имена переменных и значения, которые необходимо использовать для них.
Локальный путь к файлу конфигурации службы (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. Если сертификат самозаверяющий, браузер может сообщить предупреждение о том, что сертификат не защищен, но браузер не будет блокировать подключение.