Миграция MachineKey с iis6 на старом сервере на iis7 на новом сервере

Я переношу нашу среду хостинга в совершенно новый центр обработки данных с новыми блоками, аппаратным и программным обеспечением... в общем.

Файлы cookie нашего веб-сайта зашифрованы с помощью машинного ключа, поэтому, когда я делаю запрос к своему домену и указываю его на новый веб-сервер (путем переопределения файла локальных хостов), я получаю сообщение об ошибке, поскольку файл cookie не может быть расшифрован, так как ключ машины это отличается. Я хотел бы избежать каких-либо проблем, которые могут возникнуть у постоянных пользователей, когда они впервые заходят на новый сервер.

Насколько мне известно, на данный момент я думаю, что мне нужно установить тот же ключ MachineKey с наших текущих серверов на наши новые серверы. Таким образом, когда прошлые посетители с файлом cookie попадают на наш веб-сайт, обслуживаемый новым сервером, файл cookie будет правильно расшифрован с помощью MachineKey, с помощью которого он был зашифрован, а затем правильно авторизуются.

Мой вопрос: где мне найти значение MachineKey (на сервере IIS 6 win2k3), чтобы я мог использовать это значение, чтобы установить его статически на моих новых серверах? Я открыл свой файл machine.config, но в нем не указан ключ, а указан только раздел configSection, в котором можно определить ключ. Этого нет в моем файле web.config для приложения или где-либо еще.

Я нашел эту замечательную статью о некоторых проблемах с MachineKey и Web Garden (которые могут объяснить некоторые другие ошибки, с которыми я сталкивался в отношении machineKey).

Обновление Я вернулся к этому вопросу и все еще сталкиваюсь с похожей проблемой. У меня есть MachineKey, автоматически сгенерированный на сервере IIS6, но мне нужно получить именно этот ключ, чтобы я мог установить его явно и больше не создавать его автоматически.

Любая помощь приветствуется...


person MaseBase    schedule 19.02.2010    source источник


Ответы (2)


Вы видели это?

Похоже, вы можете получить его, посмотрев на

  • System.Web.Configuration.MachineKeySecion.DecryptionKeyInternal и
  • System.Web.Configuration.MachineKeySecion.ValidationKeyInternal

Однако они являются внутренними, поэтому вам придется использовать отражение.

person Josef Pfleger    schedule 14.03.2010
comment
Отлично! однако эта статья написана на С# 3.5, а я застрял на версии 2.0. Я пытался получить эти внутренние свойства, используя отражение, и пока не повезло. - person MaseBase; 20.03.2010
comment
Это был правильный ответ для меня, но у меня нет галочки, чтобы отметить его правильно! Мне потребовалось некоторое время, чтобы получить правильный код отражения, так как по ссылке он был в .NET 3.5, а я был в .NET 2.0 — не слишком часто используйте отражение, но оно решило мою проблему! - person MaseBase; 09.04.2010

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

  1. C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
  2. http://support.microsoft.com/kb/312906. Вы не должны сохранять его как AutoGenerate, иначе machineKeys будут автоматически сгенерированы на всех машинах и, следовательно, они будут другими.

ХТХ, Рахул

person Rahul Soni    schedule 15.03.2010
comment
Да, я не хочу держать его как автогенерацию, но я не хочу начинать с другого нового ключа. Что я хочу сделать, так это получить текущий автоматически сгенерированный ключ, чтобы я мог УСТАНОВИТЬ его и обеспечить доступ к моим файлам cookie и зашифрованным данным в будущем. - person MaseBase; 20.03.2010
comment
Я не думаю, что это стоит боли MaseBase. Вы должны установить его на всех машинах в любом случае, чтобы заставить его работать. AFAIK, текущий автоматически сгенерированный ключ изменяется при сбросе IIS/машины. - person Rahul Soni; 22.03.2010