如何在 asp .net 中禁用 fips

Dar*_*qer 4 asp.net fips

我想在 asp .net x64 应用程序中禁用 fips。在 web.config 我添加

<runtime>
    <enforceFIPSPolicy enabled = "false">
</runtime>
Run Code Online (Sandbox Code Playgroud)

我将调试设置为 false。

但是我的应用程序不起作用。我应该在 < configSections > 中声明运行时部分吗?如果是,那么它是否是一条正确的线路

<section name="runtime" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/>
Run Code Online (Sandbox Code Playgroud)

Tun*_*ung 6

解决方案仅适用于 IIS >= 7.5

看起来 IIS 不允许您通过 Web 应用程序的 web.config 操作此设置。一种解决方法是创建一个专用的应用程序池(或多个),并在禁用 FIPS 强制的情况下配置应用程序池的 CLR。 IIS 7.5 引入了一个 CLRConfigFile属性,您可以使用它来指定应用程序池的 .NET 配置文件。这使我们可以更精细地控制配置影响的应用程序 - 而不是我们在 machine.config 或组策略设置中禁用它的 Shotgun 方法。

1.创建一个配置文件,,c:\inetpub\AppPoolClrConfig\noFipsWeb.config内容如下(文件的位置和名称不重要):

<configuration>
    <runtime>
        <enforceFIPSPolicy enabled = "false" />
    </runtime> 
</configuration>
Run Code Online (Sandbox Code Playgroud)

2.将文件的读取权限授予应用程序池运行的身份:

icacls c:\inetpub\AppPoolClrConfig\noFipsWeb.config /grant "IIS APPPOOL\YourAppPoolName":(R)
Run Code Online (Sandbox Code Playgroud)

3.通过设置池的CLRConfigFile属性来配置应用程序池以加载此配置文件:

指令:

%windir%\System32\inetsrv\appcmd.exe set config  -section:system.applicationHost/applicationPools/[name='{AppPoolName}'].CLRConfigFile:"{FilePath}"  /commit:apphost
Run Code Online (Sandbox Code Playgroud)

样本:

%windir%\System32\inetsrv\appcmd.exe set config  -section:system.applicationHost/applicationPools /[name='YourAppPoolName'].CLRConfigFile:"c:\inetpub\AppPoolClrConfig\noFipsWeb.config"  /commit:apphost
Run Code Online (Sandbox Code Playgroud)

由于IIS 7.5 中错误,我们还需要清除该managedRuntimeLoader属性,否则CLRConfigFile将被忽略:

%windir%\System32\inetsrv\appcmd.exe set config  -section:system.applicationHost/applicationPools /[name='YourAppPoolName'].managedRuntimeLoader:""  /commit:apphost
Run Code Online (Sandbox Code Playgroud)

4.重启IIS。使用上述应用程序池的 Asp.NET 应用程序现在应该忽略 FIPS。

归功于:

Scott Forsyth 解释了如何配置应用程序池以使用与标准 aspnet.config 文件不同的 CLR 文件

Jose Reyes 记录了 IIS 7.5 中忽略 CLRConfigFile 属性的错误