我想在asp .net x64应用程序中解雇fips。在web.config中我添加了
<runtime>
<enforceFIPSPolicy enabled = "false">
</runtime>
我将debug设置为false。
但是我的申请不起作用。我应该在&lt;中声明运行时部分吗? configSections&gt; ?如果是,那么它是一条正确的线
<section name="runtime" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
答案 0 :(得分:4)
解决方案仅适用于IIS&gt; = 7.5
看起来IIS不允许您通过Web应用程序的web.config操作此设置。一种解决方法是创建专用的应用程序池(或多个),并配置应用程序池的CLR,禁用FIPS强制执行。 IIS 7.5 introduced a CLRConfigFile属性,可用于指定App Pool的.NET配置文件。这使我们能够更精细地控制配置影响的应用程序 - 而不是我们在machine.config或组策略设置中禁用它的shotgun方法。
1.使用以下内容创建配置文件c:\inetpub\AppPoolClrConfig\noFipsWeb.config
(文件的位置和名称无关紧要):
<configuration>
<runtime>
<enforceFIPSPolicy enabled = "false" />
</runtime>
</configuration>
2.Grant对文件的读取权限为运行应用程序池的标识:
icacls c:\inetpub\AppPoolClrConfig\noFipsWeb.config /grant "IIS APPPOOL\YourAppPoolName":(R)
3.通过设置池的CLRConfigFile
属性,配置应用程序池以加载此配置文件:
CMD:
%windir%\System32\inetsrv\appcmd.exe set config -section:system.applicationHost/applicationPools/[name='{AppPoolName}'].CLRConfigFile:"{FilePath}" /commit:apphost
样品:
%windir%\System32\inetsrv\appcmd.exe set config -section:system.applicationHost/applicationPools /[name='YourAppPoolName'].CLRConfigFile:"c:\inetpub\AppPoolClrConfig\noFipsWeb.config" /commit:apphost
由于bug in IIS 7.5,我们还需要清除managedRuntimeLoader
属性,否则CLRConfigFile
将被忽略:
%windir%\System32\inetsrv\appcmd.exe set config -section:system.applicationHost/applicationPools /[name='YourAppPoolName'].managedRuntimeLoader:"" /commit:apphost
4.Restart IIS。使用上面的App Pool的Asp.NET应用程序现在应该忽略FIPS。
致记:
Scott Forsyth解释how to configure an app pool to use a different CLR file than the standard aspnet.config file。
Jose Reyes记录the bug in IIS 7.5 that ignored the CLRConfigFile Property