Наши серверы работают под управлением Windows Server 2016 с IIS 1607. Насколько я могу судить, это означает, что IIS 10 в системе предшествует версии 1709, где, по-видимому, Microsoft добавила элемент HSTS в элемент SITES, что позволяет упростить механизм настройки. ХСТС.
Да, мы вполне можем обновить наши серверы до Windows Sever 2019 или 2022 в ближайшем будущем, но сейчас мне нужно рассмотреть сценарий Windows Server 2016.
В итоге нахожу эту информацию(https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10-версия-1709/iis-10-версия-1709-hsts), в котором показано, как реализовать HSTS в версии IIS до 1709.
Честно говоря, я ничего из этого не проверял. Мой локальный IIS, на котором я могу протестировать, — это Windows 10 с IIS версии 1889 или около того, и есть замечательный волшебный флажок, который я могу щелкнуть, что позволяет мне легко реализовать HSTS из ссылки HSTS…, которая находится в разделе «Настройка» моего сайта. в диспетчере IIS.
Тем не менее, я не осмеливаюсь касаться других наших сред, в которых правит Windows Server 2016, потому что, хотя у меня есть доступ администратора, я боюсь серьезно облажаться, если внесу несанкционированные изменения. Следовательно, этот вопрос, чтобы я мог понять, что я делаю, прежде чем что-то сломать.
Но меня смущает то, что информационный сайт, на который я ссылаюсь выше, отмечает. Должен ли я реализовать все три предложенных изменения в первом предложенном решении (Решение 1) или сработает только одно из изменений?
Как, согласно информации сайта:
До IIS 10.0 версии 1709 включение HSTS на сервере IIS требовало сложной настройки.
В Решении 1 упоминается три разных раздела web.config. Я не понимаю, требуется ли только один из этих разделов или все три.
Решение 1. Модуль перенаправления HTTP + настраиваемые заголовки
<sites>
<site name="Contoso-http" id="1" serverAutoStart="true">
<application path="/" applicationPool="Contoso-http">
<virtualDirectory path="/" physicalPath="C:\inetpub\Contoso-http" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:contoso.com" />
</bindings>
</site>
<site name="Contoso-https" id="2" serverAutoStart="true">
<application path="/" applicationPool="Contoso-https">
<virtualDirectory path="/" physicalPath="C:\inetpub\Contoso-https" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:443:contoso.com" sslFlags="0" />
</bindings>
</site>
<siteDefaults>
<logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" />
<traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" />
</siteDefaults>
<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
С последующим:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpRedirect enabled="true" destination="https://contoso.com" httpResponseStatus="Permanent" />
</system.webServer>
</configuration>
а потом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Мое первоначальное предположение состоит в том, что да, действительно, мне нужно внести все три этих изменения в файл web.config, если я хочу, чтобы HSTS работал с использованием решения 1 для установки IIS до 1709.
я вижу есть Решение 2 для предыдущих установок IIS, но я заинтересован в решении 1, чтобы лучше понять его. Часть моего замешательства заключается в том, что я видел подобную проблему, решенную кем-то другим, просто внедрив одно изменение конфигурации в пользовательские заголовки и ничего больше. Мне любопытно, это все, что мне нужно сделать.
Редактировать: Что касается предлагаемого решения (Включить строгую транспортную безопасность HTTP (HSTS) в IIS 7), то ответ на вопрос есть, по сути, Решение 2.
Одна из причин, по которой я задаю этот вопрос, заключается в том, что я видел изменения в системе, в которой использовалась только часть решения 1 (только часть настраиваемых заголовков), поэтому мне интересно, использовал ли кто-нибудь еще какое-либо решение и опыт реализации.
Я видел, что модуль перезаписи URL-адресов установлен на моем сервере IIS, поэтому я просто выберу решение 2, я думаю, поскольку это ответ на ранее заданный вопрос и кажется намного проще, чем решение 1.
окна iis hsts
Дан7эль