Azure: получение сертификата службы без определения дополнительной конфигурации

Мой облачный сервис имеет следующую конфигурацию:

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration ...>
  <Role name="...">
    <ConfigurationSettings>
      <Setting name="MyCertThumbprint" value="AB687DC9F63D51AE6E9522B86B97EFD15F55EA42" />
    </ConfigurationSettings>
    <Certificates>
      <Certificate name="MyCert" thumbprint="AB687DC9F63D51AE6E9522B86B97EFD15F55EA42" thumbprintAlgorithm="sha1" />
    </Certificates>
  </Role>
</ServiceConfiguration>

Видите избыточность?

Я хочу избавиться от конфигурации MyCertThumbprint. Есть ли API Azure, который дает мне доступ к отпечатку MyCert? Или, может быть, сам экземпляр X509Certificate2 (т.е. без необходимости искать его с помощью X509Store)?


person fernacolo    schedule 17.09.2014    source источник
comment
Вы смотрели здесь: msdn.microsoft.com/en-us/library /azure/ee460788.aspx?   -  person Gaurav Mantri    schedule 17.09.2014
comment
API полезен, но метод получения сертификата службы по-прежнему требует предварительного знания сведений о сертификате, чтобы получить отпечаток из хранилища облачных служб. В хранилище редко бывает один сертификат: RDP добавляет сертификат, удаленная отладка добавляет сертификат, SSL-сертификаты домена обычно добавляют сертификаты цепочки полномочий.   -  person viperguynaz    schedule 17.09.2014


Ответы (1)


Конечно, если вам известна другая информация о сертификате, вы можете использовать любой из Перечисления X509FindType с X509Certificate2Collection.Метод поиска. К сожалению, раздел «Сертификаты» в ServiceConfiguration предназначен для поиска сертификата в хранилище сертификатов облачной службы и установки этого сертификата на виртуальные машины, связанные с ролью, которую вы развертываете. Не существует API для прямого доступа к разделу. Таким образом, ваш выбор — жестко запрограммировать что-то вроде имени субъекта сертификата или отпечатка и надеяться, что оно не изменится, или добавить параметр, как вы продемонстрировали в своем примере кода, который настраивается при каждом развертывании.

Раздел ConfigurationSettings отражает раздел appSettings в файле web.config и при использовании в сочетании с CloudConfigurationManager.GetSetting("settingsKey") с поиском сначала в ServiceConnfiguration, а затем в web.config для параметров приложения, что позволяет вам эмулятор или просто IIS Express и достичь той же функциональности. Поэтому мы дублируем настройки как в ServiceConfiguration, так и в web.config.

person viperguynaz    schedule 17.09.2014
comment
Я интерпретирую этот ответ как вы не можете делать то, что хотите. - person fernacolo; 17.09.2014
comment
fernacolo, хотя я согласен с вашей точкой зрения, помните, что вам нужно получить настройки с помощью ключа. Вы можете использовать Certificate.name в качестве ключа. В моей компании у нас есть интерфейс, который использует все настройки службы. Для развертываний Azure конкретный класс просматривает раздел параметров. Для конечных точек он также просматривает раздел конечных точек и сертификаты. - person Igor Gatis; 06.08.2015