2011-03-18 86 views
3

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

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

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

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

更新

不幸的是,矫正机关键要素使用符合FIPS的算法并没有完全解决我的问题。我仍然在我的许多页面上发生错误。

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

+0

http://support.microsoft.com/kb/811833 – Aristos 2011-03-18 17:49:28

+0

可以设置debug = false或预编译网站。 – Marc 2011-03-18 20:33:16

+1

我们终于解决了这个问题。事实证明,包含大量网页控件的第三方DLL ComponentArts正在使用非FIPS兼容算法来获取授权内容。 – Slider345 2011-05-18 19:47:42

回答

2

请参考微软知识库文章:KB 811833 - The effects of enabling the "System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing..."。摘录:

微软.NET Framework应用程序 如Microsoft ASP.NET仅允许 使用算法实现 由NIST认证,符合FIPS 140兼容。具体而言, 可以实例化的唯一 加密算法类是 实现FIPS兼容算法的那些类。 这些类的名称以 “CryptoServiceProvider”或“Cng”结尾。任何 尝试创建其他 加密算法类,例如 与在 结尾的名称类的“管理”的一个实例,以 发生导致 InvalidOperationException异常。此外,任何尝试创建不符合FIPS的加密算法 的实例,例如MD5, 也会导致InvalidOperationException异常。

默认情况下,ASP.NET想要使用与FIPS兼容性不兼容的算法。要解决您的问题,您需要更改ASP.NET配置以改为使用兼容算法。有关如何配置其他算法,请参阅machineKey Element

This MSDN forum post建议3DES应该是兼容的...尽管之前列出的machineKey文档确实提到了AES(ASP.NET 4.0中的默认设置)“该算法符合美国联邦信息处理标准(FIPS)”。

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

+0

有趣。那么我的aspx页面上的viewstate会自动被machineKey加密?我没有意识到这一点,尽管它是有道理的。 – Slider345 2011-03-18 17:59:07

+0

有加密选项和篡改检测(签名散列)。 – 2011-03-18 18:04:04

+0

不幸的是,嗯,并没有完全解决这个问题。但是,这可能是因为我没有安装我现在列在我的问题中的一些修补程序。 – Slider345 2011-03-18 18:42:17