我想在 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)
解决方案仅适用于 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 属性的错误
| 归档时间: |
|
| 查看次数: |
4049 次 |
| 最近记录: |