В поисках обходного пути для ошибки, соответствующей FIPS - PullRequest
1 голос
/ 22 января 2020

В настоящее время команда, в которой я работаю, работает над миграцией серверов в двух средах (обе имеют БД и веб-сервер). Мы переходим с Windows Server 2008R2 на Windows Server 2016. Это совершенно новые экземпляры, которые находятся в состоянии ожидания.

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

Узел, который мы размещаем, является пользовательским. Net приложением, созданным с использованием MVC4 и C#. Он также имеет ссылку на приложение IBM Cognos для создания отчетов.

При тестировании у меня была одна область приложения. Net для тестирования, которая меня немного беспокоила. Это приложение является более старой частью сайта, которая генерирует файл PDF на основе данных в базе данных Access.

Приложение завершилось выдачей следующей ошибки: " Ошибка: эта реализация не часть проверенной криптографии c * платформы Windows платформы FIPS. Когда приложение сгенерировало ошибку, дополнительных подробностей не было зарегистрировано.

Ранее я видел эту ошибку в локальной среде разработки. Как я с этим справился, тогда изменил запись реестра Windows на следующее:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ FIPSAlgorithmPolicy Enabled = 0

Однако в нашей среде тестирования, а также на производстве это невозможно. Мы должны оставить Enabled = 1.

У нашего сервера 2008R2 с этим проблем не было, но серверу 2016 года это не нравится. На данный момент я добавил запись в web.config, чтобы разрешить это, но безрезультатно. Это запись следующего:

<system.web>
   <machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>
   ...
</system.web>

Я изменил файл MSBuild.exe.config также следующим образом:

<configuration>
    <runtime>
        <enforceFIPSPolicy enabled = "false" />
    </runtime> 
</configuration>

Ни одно из изменений не повлияло на конец. На данный момент я рисую бланк. Есть ли способ отключить FIPS для приложения?

1 Ответ

0 голосов
/ 31 марта 2020

Я наконец-то нашел решение. Код, который выдавал ошибку, вращался вокруг использования iTextSharp. У нас была более старая версия, и она была известна тем, что выдавала ошибку, о которой я упоминал выше, потому что она не соответствовала FIPS.

Быстрое и простое решение было простым: обновите версию iTextSharp до следующей версии, который был FIPS-совместимым.

Хотя это работает, мы должны переписать модуль, который использует этот код, где мы заменим iTextSharp в целом (прекращено в этот момент).

...