Перемещен asp.net сайт на новый сервер, получение «Ключа, недопустимого для использования в указанном состоянии». ошибка

#asp.net #encryption #cryptography

#asp.net #шифрование #криптография

Вопрос:

Я настроил совершенно новый, чистый сервер для запуска нашего asp.net 4 веб-сайт включен. Я скопировал папку wwwroot с одного из существующих серверов, импортировал конфигурацию и импортировал pfx-файл со «старого» сервера.

Наш веб-сайт содержит корзину покупок, и во время части процесса оплаты корзины на этом новом сервере выдается следующая ошибка:

[CryptographicException: ключ недопустим для использования в указанном состоянии.]

 Система.Безопасность.Криптография.Защищенные данные.Снять защиту (байт[] зашифрованных данных, Байт[] дополнительной энтропии, область действия DataProtectionScope)  374
 Майкрософт.Практика.Enterprise Library.Безопасность.Криптография.Защищенный ключ.Снять защиту ()  15
 Майкрософт.Практика.Enterprise Library.Безопасность.Криптография.SymmetricCryptographer.Расшифровать (байт[] зашифрованного текста)  66
 Майкрософт.Практика.Enterprise Library.Безопасность.Криптография.SymmetricAlgorithmProvider.Расшифровать (байт[] зашифрованного текста)  187
 Майкрософт.Практика.Enterprise Library.Безопасность.Криптография.Криптограф.DecryptSymmetric(String symmetricInstance, Byte[] зашифрованный текст)  114
 Майкрософт.Практика.Enterprise Library.Безопасность.Криптография.Криптограф.DecryptSymmetric(строка symmetricInstance, строка ciphertextBase64)  73
 Название компании.Объекты.Базовый платеж.получение_платежное_постоянное_четыре()  17

[Исключение TargetInvocationException: средство доступа к свойству 'PaymentNumberLastFour' для объекта 

'CompanyName.Objects.Платеж выдал следующее исключение: "Ключ недопустим для использования в указанном состоянии".

Код не изменился, это тот же код на другом веб-сервере, поэтому я предполагаю, что это как-то связано с ключами машины. Я пытался удалить ключи rsa из папки данных приложения, но безрезультатно. Я не очень знаком с криптографией в asp.net так что, вероятно, это то, чего мне не хватает.

У кого-нибудь есть идеи?
Спасибо.

Комментарии:

1. Вы пробовали предлагаемое здесь решение? forums.asp.net/p/1445940/3289695.aspx зеркальная ссылка на блог на случай, если этот сайт не будет работать: understandavinash.blogspot.com/2009/03 /…

2. Пара ссылок Google предполагает, что эта ошибка может быть вызвана передачей слишком большого количества байтов методу Encrypt. Я бы предположил, что здесь дело не в этом, но может ли быть так, что ваше тестирование на новом сервере дало ложный результат?

3. Я бы не думал, что длина будет проблемой, поскольку это не проблема для старых. Я попробовал первое решение, но безрезультатно.

Ответ №1:

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

Попробуйте использовать следующую документацию MSDN для экспорта и регенерации ключа на вашем новом сервере.

Комментарии:

1. Я думаю, что это в правильном направлении. Web.config действительно содержит ссылку на sym.key, расположенный на диске c: хостов. Мне интересно, может быть, мне нужно импортировать это в asp.net использование пользовательских ключей «aspnet_regiis -pi» «C:CustomKeys.xml » ?

2. возможно, также потребуется переместить машинный ключ, расположенный здесь: C:Documents и НастройкиВсе пользователи Данные приложения MicrosoftCrypto RSAMachineKeys

Ответ №2:

Интересно, нужно ли вам отказаться от своего ключа, используемого для шифрования информации CC.