Как отключить fips в asp.net

Я хочу отключить fips в приложении asp .net x64. В web.config я добавил

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

Я установил для отладки значение false.

Однако мое приложение не работает. Должен ли я объявить раздел времени выполнения в ‹ configSections>? Если да, то это правильная линия

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

person Darqer    schedule 22.10.2010    source источник
comment
Просто интересен корпус. Должен ли он быть enforceFIPSPolicy?   -  person    schedule 22.10.2010
comment
Да, я неправильно выразился здесь. Я применяю FIPSPolicy в своем коде. Спасибо.   -  person Darqer    schedule 22.10.2010


Ответы (1)


Решение работает только для IIS >= 7.5

Не похоже, что IIS позволяет вам манипулировать этим параметром через web.config веб-приложения. Одним из обходных путей является создание выделенного пула приложений (или нескольких) и настройка CLR пула приложений с отключенным принудительным применением FIPS. В IIS 7.5 появилось свойство CLRConfigFile, которое можно использовать для указания Файл конфигурации .NET. Это дает нам более детальный контроль над тем, на какие приложения влияет конфигурация — вместо подхода дробовика, когда мы отключаем его в machine.config или в настройках групповой политики.

1. Создайте файл конфигурации c:\inetpub\AppPoolClrConfig\noFipsWeb.config со следующим содержимым (местоположение и имя файла не имеют значения):

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

2. Предоставьте права на чтение файла удостоверению, под которым работает пул приложений:

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.

Кредиты:

Скотту Форсайту за объяснение как настроить пул приложений для используйте файл CLR, отличный от стандартного файла aspnet.config.

Хосе Рейесу за документирование ошибки. в IIS 7.5, который игнорировал свойство CLRConfigFile

person Tung    schedule 10.08.2016
comment
Это отлично работало на моем локальном компьютере, но испортило пул приложений на сервере, и сайт не загружался. Мне пришлось удалить и заново создать пул приложений, чтобы исправить это. - person Vishal; 25.04.2018
comment
Спасибо за отзыв, @Vishal. После того, как вы воссоздали пул приложений на сервере, решение хоть сработало? Каким образом был испорчен пул приложений? Какие ошибки вы получили при попытке доступа к веб-приложению (что сделало сайт недоступным)? Я заинтересован в улучшении ответа, если есть ошибки. - person Tung; 25.04.2018
comment
Пожалуйста, @Tung. Нет, выложите пересоздание пула приложений, сбросились прикладные настройки, на что я и надеялся. К сожалению, на данный момент у меня нет точной ошибки, но сайт не загрузится, и пул приложений будет остановлен. Если бы я снова запустил пул приложений и просматривал сайт, я бы получил те же результаты. Надеюсь, поможет. - person Vishal; 25.04.2018
comment
Отлично работает с Windows Server 2016 и IIS 10. Спасибо за подробный ответ. - person A P; 22.08.2018
comment
У моих выходных ушло 5 часов, чтобы понять, что мне просто нужно добавить ‹enforceFIPSPolicy enabled=false /› в мой C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Aspnet.config Я так ненавижу FIPS - person HB MAAM; 03.10.2020