#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.