我需要了解如何使ASP.NET Web应用程序符合FIPS标准。为了简单起见,我在VS 2008中创建了一个新的Web应用程序。我在我的开发机器上启用了FIPS,因为使用Web应用程序的客户端将是一个强制执行FIPS的联邦机构。
我甚至无法编译新的Web应用程序 - 因为它给了我错误:
此实现不是Windows平台FIPS验证的加密算法的一部分。
我已阅读文档并将以下元素添加到web.config文件中:
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>
<enforceFIPSPolicy enabled="false" /> (also tried <enforceFIPSPolicy enabled="0" />)
但我仍然遇到这个错误。同样,在尝试使用我的实际解决方案之前,我想让它与一个全新的Web应用程序一起使用。
我正在使用.NET 3.5 SP1作为框架。
非常感谢任何帮助。
感谢。
克里斯
答案 0 :(得分:2)
如果代码中包含任何非FIPS兼容算法的引用,即使从未实际使用/可达,也会导致FIPS合规性错误。例如,仅声明MD5CryptoServiceProvider变量而不实例化它将导致错误。这包括其他引用的.NET程序集,因此请确保没有引用的dll也可能使用非fips兼容算法。
这是一个方便的网站,列出了.NET http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html中的所有FIPS和非FIPS算法
答案 1 :(得分:0)
使新的.NET应用程序符合FIP标准有两件事。
1)在您的机器密钥设置中,使用3DES进行解密,使用SHA1进行验证,如问题中所述。 (有一个STIG表示你应该使用SHA1。https://www.stigviewer.com/stig/iis_7.0_web_site/2014-03-25/finding/V-26026)
2)确保代码未处于调试模式。 web.config的编译部分和页面指令都应该有debug =&#34; false&#34;。调试=&#34;真&#34;在.Net甚至可以运行第一行代码之前,它将启动FIPs合规性错误。
对于Visual Studio来编译代码,您可能需要在visual studio上禁用fips。
2010年视觉研究:
从中打开Devenv.exe.config C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE(如果您使用的是x64操作系统) 或C:\ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ on x86 OS
查找</runtime>
代码并在该行上方添加以下内容:
<enforceFIPSPolicy enabled="false"/>
经过上述修改后,devenv配置如下:
<configuration>
<runtime>
.
.
.
<enforceFIPSPolicy enabled="false"/>
</runtime>
</configuration>
重新启动Visual Studio
资料来源:https://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs.100).aspx