Azure/Wasabi: сертификат никогда не попадает в CurrentUser/My store
Я пытаюсь заставить Васаби (блок автоматического масштабирования библиотеки Enterprise) работать в рабочей роли Azure. Рабочая роль Васаби (Extra Small, полное доверие) масштабирует другую рабочую роль в одной и той же службе. Он отлично работает из локального консольного приложения с идентичной конфигурацией - учитывая ошибки, сертификат не попадает в виртуальную машину. Я использую последние версии пакетов Azure SDK, блока автоматического масштабирования библиотеки предприятия и портала Azure.
Вот шаги, которые я предпринял, основываясь на этих документах: http://msdn.microsoft.com/en-us/library/hh680937(v=pandp.50).aspx
- Я создал сертификат управления в соответствии с указаниями здесь: http://msdn.microsoft.com/en-us/library/gg432987.aspx.
- Я экспортировал.pfx с закрытым ключом и дал ему пароль.
- Я загрузил.cer в раздел Настройки-> Сертификаты управления на портале.
- Я загрузил файл.pfx с правильным паролем в облачные службы ->(Моя служба)-> Сертификаты, отметив указанный отпечаток.
- Я создал несколько тривиальных правил, которые масштабируют мое приложение на несколько экземпляров, и правильно настроил служебную информацию для использования моего нового сертификата. Файлы XML находятся в хранилище BLOB-объектов. Именно эта конфигурация прекрасно работает на моей локальной машине в консольном приложении.
- Я добавил запись в конфигурацию роли Васаби, используя правильное имя сертификата и отпечаток. Я установил его для использования CurrentUser\My store. Я подтвердил, что файлы.csdef и.cscfg были правильно обновлены.
- Я развертываю службу в Stage на Azure, используя инструмент публикации. Параметр конфигурации сертификата правильно отображается в параметре конфигурации для роли.
- Это не масштабирует приложение. Я проверяю записи трассировки, и она имеет исключение при попытке получить доступ к API управления. Он пытается получить доступ к нужной подписке и пытается найти правильный отпечаток сертификата в нужном хранилище, поэтому моя конфигурация загружается правильно. Он утверждает, что не может найти сертификат с этим отпечатком в этом магазине.
Я попробовал LocalMachine\My store (настроенный в настройках сертификата роли и в XML-хранилище служебной информации), и я получил другое исключение - ошибка, указанная в исключении Azure WASABi SecurityNegotiationException. Это исправление в конечном итоге должно было перейти к CurrentUser, так что это мне здесь не поможет.
Я перепробовал множество других комбинаций CurrentUser\LocalMachine и разных хранилищ, и все местоположения CurrentUser приводят к сертификату не найден, а все хранилища LocalMachine приводят к другому исключению.
Я трижды проверил отпечатки в настройках роли, портале (странице сертификата) и файле информации о сервисе, и все они совпадают.
Затем я включил удаленный рабочий стол и выполнил вход в экземпляр роли Wasabi и использовал MMC для просмотра конфигурации сертификата как для локального компьютера, так и для текущего пользователя. Когда я выбрал хранилище LocalMachine в настройках сертификата роли, сертификат обнаружился в хранилище LocalMachine, что говорит о том, что сертификат правильно установлен в службе, и отпечатки совпадают. Когда выбрано хранилище CurrentUser, сертификат нигде не виден. Это может быть связано с тем, что пользователь, используемый RDP, не является тем же пользователем, что и служба, но он соответствует ошибке.
Итак, в итоге:
- Сертификат был правильно настроен и установлен на портале (сертификаты управления для подписки и сертификаты обслуживания).
- Очевидно, вы должны использовать местоположение CurrentUser, а не местоположение LocalMachine, для роли Wasabi (согласно связанному вопросу SO).
- Когда я пытаюсь установить в CurrentUser, сертификат не помещается в виртуальную машину, по крайней мере, нигде, где роль может найти его.
Есть идеи?
Спасибо!
1 ответ
Смотрите мой ответ на этот пост. Сертификат должен быть в 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>