如何在asp.net中禁用fips

时间:2010-10-22 11:46:08

标签: asp.net fips

我想在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"/>

1 个答案:

答案 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