Azure / Wasabi: сертификат никогда не попадает в CurrentUser / My store

Я пытаюсь заставить васаби (блок автомасштабирования корпоративной библиотеки) работать с рабочей ролью Azure. Рабочая роль васаби (Extra Small, полное доверие) масштабирует другую рабочую роль в рамках той же службы. Он отлично работает из локального консольного приложения с идентичной конфигурацией - из-за ошибок сертификат не попадает в виртуальную машину. Я использую последние версии пакетов SDK для Azure, блок автомасштабирования корпоративной библиотеки и портал Azure.

Вот шаги, которые я предпринял на основе этих документов: http://msdn.microsoft.com/en-us/library/hh680937(v=pandp.50).aspx

  1. Я создал сертификат управления в соответствии с указаниями здесь: http://msdn.microsoft.com/en-us/library/gg432987.aspx.
  2. Я экспортировал .pfx с закрытым ключом и дал ему пароль.
  3. Я загрузил .cer в раздел «Настройки» -> «Сертификаты управления» на портале.
  4. Я загрузил .pfx с правильным паролем в облачные службы -> (Моя служба) -> Сертификаты, отметив указанный отпечаток.
  5. Я создал несколько тривиальных правил, которые увеличивают масштаб моего приложения на несколько экземпляров, и правильно настроил служебную информацию для использования моего нового сертификата. Файлы XML находятся в хранилище BLOB-объектов. Именно эта конфигурация отлично работает на моем локальном компьютере в консольном приложении.
  6. Я добавил запись в конфигурацию роли Васаби, используя правильное имя сертификата и отпечаток. Я настроил его на использование CurrentUser \ My store. Я подтвердил, что файлы .csdef и .cscfg обновлены правильно.
  7. Я развертываю службу для промежуточной обработки в Azure с помощью инструмента публикации. Параметр конфигурации сертификата правильно отображается в параметре конфигурации для роли.
  8. Приложение не масштабируется. Я проверяю записи трассировки, и возникает исключение при попытке получить доступ к API управления. Он пытается получить доступ к правильной подписке и пытается найти правильный отпечаток сертификата в нужном хранилище, поэтому моя конфигурация загружается правильно. Он утверждает, что не может найти сертификат с этим отпечатком в этом магазине.

Я попробовал LocalMachine \ My store (настроенный в настройках сертификата роли и в XML хранилища служебной информации), и у меня возникло другое исключение - ошибка, указанная в Azure WASABi SecurityNegotiationException. Это исправление в конечном итоге должно было перейти к CurrentUser, так что здесь мне это не помогает.

Я пробовал множество других комбинаций CurrentUser \ LocalMachine и разных хранилищ, и все местоположения CurrentUser приводят к тому, что сертификат не найден, а все хранилища LocalMachine приводят к другому исключению.

Я трижды проверил отпечатки пальцев в настройках ролей, на портале (страница сертификата) и в файле служебной информации, и все они совпадают.

Затем я включил удаленный рабочий стол и вошел в экземпляр роли Wasabi и использовал MMC для просмотра конфигурации сертификата как для локального компьютера, так и для текущего пользователя. Когда я выбрал хранилище LocalMachine в настройках сертификата роли, сертификат действительно появился в хранилище LocalMachine, что говорит мне, что сертификат правильно установлен в службе и отпечатки пальцев совпадают. Когда выбрано хранилище CurrentUser, сертификат нигде не отображается. Это может быть связано с тем, что пользователь, который используется RDP, не является тем же пользователем, что и служба, но он соответствует ошибке.

Итак, вкратце:

  1. Сертификат был правильно настроен и установлен на портале (сертификаты управления для подписки и сертификаты услуг).
  2. По-видимому, вы должны использовать местоположение CurrentUser, а не местоположение LocalMachine, для роли Wasabi (согласно связанному вопросу SO).
  3. Когда я пытаюсь установить в CurrentUser, сертификат не помещается в виртуальную машину, по крайней мере, нигде, где роль может его найти.

Любые идеи?

Спасибо!


person Matthew Picioccio    schedule 12.02.2013    source источник


Ответы (1)


См. Мой ответ на этот SO POST. Сертификат должен находиться в LocalMachine, и из-за изменений конфигурации в SDK 1.8 и инициализации роли Server2012 вам необходимо запустить рабочую роль с повышенными разрешениями, чтобы предоставить NETWORK SERVICE доступ к закрытым ключам сертификата. Отредактируйте ServiceDefinition.csdef

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="blah" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WorkerRole name="blah" vmsize="Small">
    <Runtime executionContext="elevated" />
    ...      
   </WorkerRole>
</ServiceDefinition>
person viperguynaz    schedule 12.02.2013
comment
Вау, я не понимаю, как я пропустил этот вопрос. Забавно, что раньше все рекомендации были использовать CurrentUser, так как LocalMachine не работал. Я также чувствую себя лучше, когда бился об это головой - это была проблема SDK, а не какая-то глупость, которую я упустил. - person Matthew Picioccio; 13.02.2013