Добавление machineKey в web.config на веб-сайтах
Мы (вне реального партнера ИТ) недавно изменили некоторые DNS для веб-сайта, который у нас есть, так что у двух производственных серверов есть циклическое переключение DNS между ними. До этого коммутатора у нас не было проблем с WebResource.axd
файлами. Поскольку переключатель, когда мы нажимаем прямой URL, мы получаем ошибку:
CryptographicException
Заполнение недопустимо и не может быть удалено.
Когда мы нажимаем на определенные серверы, они загружаются штрафом. Я исследовал проблему, и, похоже, поскольку они распределяют активы между двумя серверами, для каждого сервера требуется согласованный machineKey
в web.config
, чтобы они могли последовательно шифровать и расшифровывать данные между ними. Мои вопросы:
- Можно ли создать
machineKey
с помощью инструмента на сервере или мне нужно написать код для этого?
- Нужно ли просто добавлять
machineKey
к web.config
на каждом сервере, или, как вы думаете, мне нужно будет сделать что-нибудь еще, чтобы оба сервера работали вместе? (Оба web.config
в настоящее время не имеют machineKey
)
Ответы
Ответ 1
Это должно ответить:
Как настроить MachineKey в ASP.NET 2.0 - соображения по развертыванию веб-фермы
Короче говоря, для настройки машинного ключа укажите следующую ссылку:
Настройка машинного ключа - Документация о садоводстве.
и добавьте следующую строку в файл web.config
во всем теге webservers
под тегом system.web
, если он не существует.
<machineKey
validationKey="21F0SAMPLEKEY9C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
decryptionKey="ABAASAMPLEKEY56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>
Пожалуйста, убедитесь, что у вас есть постоянная резервная копия машинных клавиш и web.config
file
Ответ 2
Если вы используете IIS 7.5 или более позднюю версию, вы можете сгенерировать машинный ключ из IIS и сохранить его непосредственно в web.config, в веб-ферме вы просто скопируете новый web.config на каждый сервер.
- Откройте диспетчер IIS.
- Если вам нужно создать и сохранить MachineKey для всех ваших приложений, выберите имя сервера в левой панели, в этом случае вы будете изменять файл root web.config(который помещается в папку платформы .NET). Если вы намерены создать MachineKey для определенного веб-сайта/приложения, выберите веб-сайт/приложение из левой панели. В этом случае вы будете изменять файл
web.config
вашего приложения.
- Дважды щелкните значок Machine Key в настройках ASP.NET в средней панели:
- Раздел MachineKey будет считан из вашего файла конфигурации и будет отображаться в пользовательском интерфейсе. Если вы не настроили конкретный MachineKey и он будет создан автоматически, вы увидите следующие параметры:
- Теперь вы можете нажать "Создать ключи" на правой панели, чтобы генерировать случайные "MachineKeys". Когда вы нажмете "Применить", все настройки будут сохранены в файле
web.config
.
Подробные сведения можно увидеть @Самый простой способ создания MachineKey - Советы и рекомендации: разработка ASP.NET, IIS и .NET...
Ответ 3
Обязательно изучите простую уязвимость asac.net asp.net, которая только что произошла (вы применили патч, правильно?...) и используйте защищенные разделы для шифрования машинного ключа и любой другой конфиденциальной конфигурации.
Альтернативным вариантом является установка его на уровне машины web.config, поэтому его даже не в папке веб-сайта.
Чтобы сгенерировать его, сделайте это так же, как и связанная статья в ответе Дэвида.