ソリューションは IIS >= 7.5 でのみ機能します
IIS では、Web アプリケーションの web.config を介してこの設定を操作できるようには見えません。回避策の 1 つは、専用のアプリケーション プール (または複数) を作成し、アプリケーション プールの CLR を FIPS 強制を無効にして構成することです。 IIS 7.5 では、アプリケーション プールの .NET 構成ファイルを指定するために使用できるCLRConfigFile プロパティが導入されました。これにより、machine.config またはグループ ポリシー設定で無効にするショットガン アプローチの代わりに、構成が影響を与えるアプリケーションをより細かく制御できます。
1.c:\inetpub\AppPoolClrConfig\noFipsWeb.config
次の内容の構成ファイルを作成します (ファイルの場所と名前は重要ではありません)。
<configuration>
<runtime>
<enforceFIPSPolicy enabled = "false" />
</runtime>
</configuration>
2. アプリケーション プールを実行する ID に、ファイルの読み取りアクセス許可を付与します。
icacls c:\inetpub\AppPoolClrConfig\noFipsWeb.config /grant "IIS APPPOOL\YourAppPoolName":(R)
3. プールのCLRConfigFile
プロパティを設定して、この構成ファイルをロードするようにアプリケーション プールを構成します。
コマンド:
%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
IIS 7.5 のバグにより、managedRuntimeLoader
プロパティもクリアする必要があります。クリアしないCLRConfigFile
と無視されます。
%windir%\System32\inetsrv\appcmd.exe set config -section:system.applicationHost/applicationPools /[name='YourAppPoolName'].managedRuntimeLoader:"" /commit:apphost
4.IIS を再起動します。上記のアプリケーション プールを使用している Asp.NET アプリケーションは、FIPS を無視する必要があります。
クレジット:
Scott Forsythは、標準の aspnet.config ファイルとは異なる CLR ファイルを使用するようにアプリ プールを構成する方法を説明してくれました。
CLRConfigFile プロパティを無視した IIS 7.5 のバグを文書化してくれた Jose Reyes