3

我在一个政府网站上工作,并且在我的本地安全策略干扰我的 Web 应用程序时遇到了一些问题。在我的服务器上启用了一个名为“系统加密:使用符合 FIPS 140 的加密算法,包括加密、散列和签名算法”的设置。

由于已启用,我的大多数 aspx 页面都返回错误“此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。” 这些页面没有访问任何加密方法。他们确实与另一个数据库服务器通信,但仅此而已。

我的问题与此处描述的问题类似 但是,我没有禁用此 FIPS 安全设置的选项。

我正在使用 .NET 4.0、IIS 7.0 和 Windows Server 2008 R2,如果这很重要的话。有没有人遇到过这个问题?

更新

不幸的是,更正机器密钥元素以使用符合 FIPS 的算法并没有完全解决我的问题。我的很多页面上仍然出现错误。

我发现了两个可能相关的修补程序。我会尝试安装这些,看看会发生什么。

4

1 回答 1

2

请参阅 Microsoft 的知识库文章:KB 811833 - 启用“系统加密:使用符合 FIPS 的算法进行加密、散列和签名...”的效果。摘抄:

Microsoft .NET Framework 应用程序(例如 Microsoft ASP.NET)仅允许使用经 NIST 认证为符合 FIPS 140 的算法实现。具体来说,唯一可以实例化的加密算法类是那些实现符合 FIPS 的算法的类。这些类的名称以“CryptoServiceProvider”或“Cng”结尾。任何尝试创建其他加密算法类的实例,例如名称以“Managed”结尾的类,都会导致发生 InvalidOperationException 异常。此外,任何创建不符合 FIPS 的加密算法(例如 MD5)实例的尝试也会导致 InvalidOperationException 异常。

默认情况下,ASP.NET 希望使用与 FIPS 合规性不兼容的算法。 要解决您的问题,您需要更改 ASP.NET 配置以改用兼容的算法。有关如何配置另一种算法的信息,请参阅machineKey 元素。

这个 MSDN 论坛帖子建议3DES应该兼容......尽管前面列出的 machineKey 文档确实提到了 AES(ASP.NET 4.0 中的默认值)“该算法符合美国联邦信息处理标准 (FIPS) ”。

我还听说debug="true"在您的 web.config 中可能会导致错误。

于 2011-03-18T17:55:12.177 回答