У меня есть три экземпляра приложения: локальный, промежуточный (удаленный) и рабочий (удаленный). Все три из них работают под управлением IIS 10. Локальная — Windows 10, два удаленных сервера — Windows Server 2016.
Все три имеют applicationHost.config, настроенный следующим образом:
<configuration>
<configSections>
<sectionGroup name="system.webServer">
<sectionGroup name="security">
<section name="access" overrideModeDefault="Deny" />
</sectionGroup>
</sectionGroup>
</configSections>
<location path="mbrs">
<system.webServer>
<security>
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert, Ssl128" />
</security>
</system.webServer>
</location>
</configuration>
Local и Staging учитывают эту конфигурацию, и редактор конфигурации IIS будет правильно определять место хранения флагов SSL как заблокированное и в applicationHost.config. Изменение overrideModeDefault на «Разрешить» или добавление overrideMode = «Разрешить» к тегу местоположения снимет блокировку. Изменение overrideModeDefault на «Разрешить», и добавление overrideMode="Deny" к тегу местоположения приведет к принудительной блокировке.
Производство не соблюдает блокировку ни при каких обстоятельствах и всегда позволяет сохранять флаги SSL в web.config.
Подробное чтение документации Microsoft приводит меня к мысли, что нет других файлов конфигурации или значений, которые могли бы повлиять на эту ситуацию, но, поскольку это наш рабочий сервер, который, по-видимому, нарушает правила блокировки, я скорее надеюсь, что ошибаюсь!
Что мне не хватает?