Я пытаюсь включить TLS 1.2 на нашем сервере Windows 2008 R2 для соответствия PCI, и мне удалось заставить его работать, следуя это непонятное сообщение в блоге, в котором требуется включить проверку FIPS. Наконец, после нескольких недель поиска решения, «щелчок один раз», удаленное взаимодействие .NET и MS Web Deploy обмениваются данными через TLS 1.2.
Однако у меня также есть веб-приложения на машине, которые перестают работать, когда я включил проверку FIPS со следующей ошибкой:
Эта реализация не является частью проверенных FIPS алгоритмов шифрования платформы Windows.
Описание. Необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.
Сведения об исключении: System.InvalidOperationException: эта реализация не является частью криптографических алгоритмов платформы Windows, проверенных FIPS.
Ошибка источника:
Необработанное исключение было создано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью трассировки стека исключений ниже.
Трассировка стека:
[InvalidOperationException: эта реализация не является частью проверенных FIPS криптографических алгоритмов платформы Windows.] System.Security.Cryptography.RijndaelManaged..ctor () +10489630 System.Web.Configuration.MachineKeySection.ConfigureEncryptionObject () +439 System.Web. .MachineKeySection.EnsureConfig () +152 System.Web.Configuration.MachineKeySection.HashData (Byte [] buf, модификатор Byte [], начало Int32, длина Int32) +48 System.Web.Configuration.MachineKeySection.HashAndBase64EncodeString (String 136 System.Web.SessionState.OutOfProcSessionStateStore.OneTimeInit () +763 System.Web.SessionState.OutOfProcSessionStateStore.Initialize (имя строки, конфигурация NameValueColition) +223 Имя System.Web.SessionValueColition, имя раздела System.Web.SessionColition.OutOfProcueSession ) +43 System.Web.SessionState.SessionStateModule.InitModuleFromConfig (приложение HttpApplication, SessionStateSection con fig) +11279756 System.Web.SessionState.SessionStateModule.Init (приложение HttpApplication) +155 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext, контекст HttpContext, обработчики MethodInfo []) +480 State.WebApplication.Http , Обработчики MethodInfo [], IntPtr appContext, HttpContext context) +336 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, HttpContext context) +350 System.Web.Hosting.PipelineRuntime.InitializeApprlication (IntializeApprlication)
[HttpException (0x80004005): эта реализация не является частью проверенных FIPS криптографических алгоритмов платформы Windows.] System.Web.HttpRuntime.FirstRequestInit (контекст HttpContext) +11421094 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext) контекст System.Web .HttpRuntime.ProcessRequestNotificationPrivate (запись IIS7WorkerRequest, контекст HttpContext) +4405316
Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.5485; Версия ASP.NET: 2.0.50727.5491
Я использую службу состояния ASP.NET со всеми тремя приложениями, и они получают эту трассировку стека.
Я искал решения, и все они в основном говорят, что нужно переключить алгоритм на тот, который совместим с FIPS.
- Проблема с криптографическими алгоритмами, утвержденными FIPS
- страницы ASPX не работают из-за политики безопасности FIPS 140
Но поскольку это создается самим ASP.NET, каково решение? Я использую .NET 3.5, решит ли проблему обновление до новой версии? Или есть более простое исправление, например, настройка конфигурации?
ПРИМЕЧАНИЕ. Я также попытался использовать внутрипроцессное состояние сеанса, которое обходит эту ошибку, а затем я получаю ту же ошибку с шифрованием файлов cookie (которое, по-видимому, также использует
System.Security.Cryptography.RijndaelManaged
). Я попытался установить ключ компьютера на тот, который указан в примере здесь (для теста), а также объединил его с AES в качестве параметров дешифрования и проверки, но это не повлияло на сообщение об ошибке.