Добавление machineKey в web.config на сайтах веб-фермы

Мы (на самом деле наш ИТ-партнер) недавно изменили некоторые DNS для веб-сайта, который у нас есть, так что два рабочих сервера имеют циклическое переключение DNS между ними. До этого перехода у нас действительно не было проблем с WebResource.axd файлами. Поскольку переключатель, когда мы нажимаем на общедоступный URL-адрес, мы получаем ошибку:

CryptographicException

Заполнение недействительно и не может быть удалено.

Когда мы нажимаем на конкретные серверы, они загружаются нормально. Я исследовал эту проблему, и мне кажется, что, поскольку они совместно используют ресурсы между двумя серверами, нам необходимо иметь согласованный machineKey в web.config для каждого сервера, чтобы они могли последовательно шифровать и дешифровать между двумя серверами. Мои вопросы:

  1. Могу ли я сгенерировать machineKey с помощью инструмента на сервере, или мне нужно написать код для этого?
  2. Мне просто нужно добавить machineKey к web.config на каждом сервере, или вы думаете, что мне нужно сделать что-нибудь еще, чтобы два сервера работали вместе? (Оба web.config в настоящее время не имеют machineKey)

person Mark Ursino    schedule 04.10.2010    source источник
comment
Попробуйте разместить сообщение на serverfault.com   -  person TimS    schedule 04.10.2010
comment
@TimS - ок. Я просто подумал, что SO b / c web.config с .NET, но я собираюсь перейти на него соответствующим образом. Спасибо.   -  person Mark Ursino    schedule 04.10.2010
comment
Нп, просто там может быть больше отклика.   -  person TimS    schedule 04.10.2010


Ответы (3)


Это должно ответить:

Как: настроить MachineKey в ASP.NET 2.0 - соображения по развертыванию веб-фермы

Рекомендации по развертыванию веб-фермы

При развертывании приложения в веб-ферме необходимо убедиться, что файлы конфигурации на каждом сервере имеют одинаковое значение для validationKey и decryptionKey, которые используются для хеширования и дешифрования соответственно. Это необходимо, потому что вы не можете гарантировать, какой сервер будет обрабатывать последовательные запросы.

Параметры ключей, сгенерированных вручную, должны быть аналогичны приведенным в следующем примере.

<machineKey  
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
               AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"       

decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>

Если вы хотите изолировать свое приложение от других приложений на том же сервере, поместите файл Web.config для каждого приложения на каждом сервере в ферме. Убедитесь, что вы используете отдельные значения ключей для каждого приложения, но дублируете ключи каждого приложения на всех серверах фермы.

Короче говоря, для настройки машинного ключа перейдите по следующей ссылке: Настройка Машинный ключ - Документация по саду.

Настройка машинного ключа с помощью диспетчера IIS

Если у вас есть доступ к консоли управления IIS для сервера, на котором установлен Orchard, это самый простой способ настроить машинный ключ.

Запустите консоль управления и выберите веб-сайт. Откройте конфигурацию ключа компьютера:  Панель настройки веб-сайта IIS

Панель управления машинным ключом имеет следующие настройки:

Панель конфигурации машинного ключа

Снимите флажок «Автоматически генерировать во время выполнения» как для ключа проверки, так и для ключа дешифрования.

Нажмите «Сгенерировать ключи» в разделе «Действия» в правой части панели.

Нажмите «Применить».

и добавьте следующую строку в файл web.config во всех тегах webservers под system.web, если он не существует.

<machineKey  
    validationKey="21F0SAMPLEKEY9C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
                   AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"           
    decryptionKey="ABAASAMPLEKEY56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
    validation="SHA1"
    decryption="AES"
/>

Убедитесь, что у вас есть постоянная резервная копия ключей машины и web.config файла.

person BlackICE    schedule 04.10.2010
comment
Если это не сработает, удалите validation="SHA1" decryption="AES" из приведенной выше строки кода, тогда все будет нормально. - person John; 26.07.2017
comment
вы знаете, как настроить то же самое для веб-приложения Azure? Мы хотели бы иметь приложение ASP.Net MVC с High Availability Disaster Recovery (HADR). Для настройки Azure мы не можем сгенерировать машинный ключ из IIS, вместо этого мы используем ссылку в блоге . Но мы получаем внутреннюю ошибку сервера (500) - person Mihir Shah; 13.08.2020
comment
@BlackICE, я забыл упомянуть ваше имя в комментариях выше. Вы знаете, как настроить то же самое для веб-приложения MS Azure? - person Mihir Shah; 14.08.2020
comment
Для всех, кто пытается найти местоположение по умолчанию для раздела machineKey, когда он еще не настроен в web.config, это %SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\web.config.comments - person Cristian; 17.11.2020
comment
добавить в machine.config? - person Kiquenet; 21.01.2021

Если вы используете IIS 7.5 или более позднюю версию, вы можете сгенерировать машинный ключ из IIS и сохранить его непосредственно в своем web.config, а внутри веб-фермы вы просто скопируете новый web.config на каждый сервер.

  1. Откройте диспетчер IIS.
  2. Если вам нужно сгенерировать и сохранить MachineKey для всех ваших приложений, выберите имя сервера на левой панели, в этом случае вы будете изменять корневой файл web.config (который находится в папке .NET framework). Если вы собираетесь создать MachineKey для определенного веб-сайта / приложения, выберите веб-сайт / приложение на левой панели. В этом случае вы будете изменять web.config файл своего приложения.
  3. Дважды щелкните значок Machine Key в настройках ASP.NET на средней панели:
  4. Раздел MachineKey будет считан из вашего файла конфигурации и отображаться в пользовательском интерфейсе. Если вы не настраивали конкретный MachineKey и он создается автоматически, вы увидите следующие параметры:
  5. Теперь вы можете щелкнуть Generate Keys на правой панели, чтобы сгенерировать случайные MachineKeys. Когда вы нажмете «Применить», все настройки будут сохранены в web.config файле.

Полную информацию можно увидеть @ Самый простой способ сгенерировать MachineKey - Советы и рекомендации: разработка ASP.NET, IIS и .NET…

person TheAlbear    schedule 16.07.2014
comment
blogs.msdn. com / b / amb / archive / 2012 / 31.07.2012 / не найдено - person Kiquenet; 21.01.2021
comment
это должно быть похоже, кто знает, как долго эта ссылка будет длиться. docs.microsoft.com/en-us/previous-versions/windows/it-pro/ - person BlackICE; 25.01.2021

Обязательно изучите padding oracle asp .net, которая только что возникла (вы применили патч, верно? ...), и используйте защищенные разделы для шифрования машинного ключа и любой другой конфиденциальной конфигурации.

Альтернативный вариант - установить его в web.config на уровне компьютера, чтобы его даже не было в папке веб-сайта.

Чтобы сгенерировать его, сделайте это так же, как связанная статья в ответе Дэвида.

person eglasius    schedule 04.10.2010