寻找 FIPS 兼容错误的解决方法

Looking for work around for FIPS Compliant error

目前我所在的团队正在进行两个环境(都有数据库和 Web 服务器)的服务器迁移。我们正在从 Windows Server 2008R2 迁移到 Windows Server 2016。这些是正在建立的全新实例。

我们完成了一个环境,然后开始 运行 通过测试托管在两台服务器上的站点(一个是测试环境,一个是生产环境)。除了测试环境中的一个例外,大部分功能都按预期运行。

我们托管的站点是使用 MVC4 和 C# 构建的自定义 .Net 应用程序。它还有一个 link 输出到 IBM Cognos 应用程序以用于报告目的。

在测试中,我对 .Net 应用程序的一个区域进行测试,这让我有点担心。此应用程序是网站的较旧部分,它根据 Access DB 中的数据生成 PDF 文件。

应用程序最终抛出以下错误:“错误:此实现不是 Windows 平台 FIPS 验证加密算法的一部分”。应用程序抛出错误时没有记录其他详细信息。

我以前在我的本地开发环境中看到过这个错误。然后我如何处理它是将 Windows 注册表项更改为以下内容:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy 已启用 = 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?

我终于找到了解决办法。引发错误的代码与 iTextSharp 的使用有关。我们拥有的版本较旧,并且因抛出我上面提到的错误而臭名昭著,因为它不符合 FIPS。

快速简便的解决方案很简单:将 iTextSharp 的版本升级到符合 FIPS 标准的下一版本。

虽然这可行,但我们将重写使用此代码的模块,我们将在其中完全替换 iTextSharp(此时已停产)。