2010-10-22 57 views
3

我想在asp.net.net x64應用程序中使用fips。在web.config中添加了如何在asp.net中禁用fips

<runtime> 
    <enforceFIPSPolicy enabled = "false"> 
</runtime> 

我將debug設置爲false。

但是我的應用程序不工作。我應該在< configSections>中聲明運行時段嗎?如果是的話那麼它是一個合適的線路

<section name="runtime" type="System.Configuration.IgnoreSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false"/> 
+1

只是好奇的外殼。應該是** enforceFIPSPolicy **? – 2010-10-22 11:51:13

+0

是的,我在這裏說錯了。我在我的代碼中執行了FIPSPolicy。謝謝。 – Darqer 2010-10-22 11:58:54

回答

1

解決方案僅適用於IIS> = 7.5

它看起來並不像IIS允許您操作通過一個Web應用程序的web.config此設置。一種解決方法是創建專用應用程序池(或多個),並禁用FIPS實施來配置應用程序池的CLR。 IIS 7.5 introduced a CLRConfigFile屬性,您可以使用它來指定應用程序池的.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.Configure應用程序池通過設置池的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。

貸:

斯科特·福賽斯解釋how to configure an app pool to use a different CLR file than the standard aspnet.config file

何塞雷耶斯記錄the bug in IIS 7.5 that ignored the CLRConfigFile Property