Протокол https не работает на IIS 10 после обновления с Windows 7

Протокол https не работает на IIS 10 после обновления с Windows 7

У меня есть приложение ASP, работающее в IIS 7.5. Из-за окончания поддержки Windows 7 мне пришлось обновиться до Windows 10 и IIS 10. Все, казалось, было на месте, за исключением того, что теперь сайт ASP или любой другой веб-сайт работает, если только не используется https. Пока Firefox выдает мне PR_CONNECT_RESET_ERROR, Chrome возвращает ERR_SSL_PROTOCOL_ERROR, а Edge возвращает Hmmm can't access this page.

Некоторые ответы указывают на модуль ARR Rewrite, который я удалил и после перезагрузки переустановил обновленную версию с тем же результатом. В итоге я удалил его (он больше не нужен) и перезагрузился. Я переустанавливаю IIS, удаляя функции Windows, перезагружаясь и переустанавливая IIS снова и перезагружаясь. Я удаляю все сертификаты и создаю самоподписанный один и та же проблема. Наконец, я удалил все свои веб-сайты с этого веб-сервера и создал новый в каталоге по умолчанию (wwwroot, который содержит файл html и два изображения), который отображается, пока используется протокол http, но не https (те же ошибки). Я следовалэто руководстводля IIS 7, но никакой любви. Я также отзываю и снова даю разрешения папкам для IUSR после переустановок. Наконец, я отключил фильтрацию SSL от антивируса, но никакой разницы.

Сертификат, который использовался изначально, был создан внутри компании с помощью openssl для генерации общекорпоративного корневого сертификата, промежуточного сертификата и сертификата машины, который работал нормально до обновления. В настоящее время, как я уже сказал, даже с самоподписанным сертификатом не работает ни один из используемых браузеров для обслуживания самого простого контента. У меня закончились идеи, что проверить.

Это трассировка, которую я получил от IIS

 #Software: Microsoft Internet Information Services 10.0
 #Version: 1.0
 #Date: 2020-01-20 20:12:22
 #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
 2020-01-20 20:12:22 192.168.1.100 GET / - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 - 200 0 0 2687
 2020-01-20 20:12:22 192.168.1.100 GET /iisstart.png - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 http://devmachine.company.local/ 200 0 0 12
 2020-01-20 20:12:22 192.168.1.100 GET /favicon.ico - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 - 404 0 2 5
 #Software: Microsoft Internet Information Services 10.0
 #Version: 1.0
 #Date: 2020-01-20 12:26:37
 #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
 2020-01-20 20:12:22 ::1 GET / - 443 - ::1 Microsoft+Windows+Network+Diagnostics - 200 0 0 996
 2020-01-20 20:12:22 192.168.1.100 HEAD / - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 - 200 0 0 19
 2020-01-20 20:27:38 192.168.1.100 GET / - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 - 200 0 0 8
 2020-01-20 20:27:38 192.168.1.100 GET /iisstart.png - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 http://devmachine.company.local/ 200 0 0 50
 2020-01-20 20:27:38 192.168.1.100 GET /favicon.ico - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 http://devmachine.company.local/ 404 0 2 19

Как видите, сработал только http (я изменил время в очередной попытке проверить, нет ли проблем с часами, но их не было. Chrome жаловался на http, так что с часами все в порядке), но никаких следов https нет.

решение1

Я сам нашел ответ. Проблема была в том, что за эти годы шифры изменились, но только для серверов Windows 2012 и 2016 были надлежащие обновления, но не для более старых версий, и Windows 10 уже имела эти записи и обновлялась соответствующим образом. Следовательно, есть некоторые записи реестра, которых не существует, которые влияют на способ обработки SSL в IIS после обновления. Чтобы проверить, так ли это, откройте новую вкладку в Firefox и введите about:config и найдите security.tls.version.max, установите его на 3 и сохраните. Если вы попытаетесь перейти на веб-сайт, он сработает или, по крайней мере, покажет обычное предупреждение о том, что сертификат неверен. Если так, то отмените изменение в Firefox и выполните изображенное решениездесь; которые я в любом случае опишу на тот случай, если эти страницы будут забыты или удалены.

Вся проблема решается путем обновления следующих записей реестра, которые следует создать или изменить в зависимости от того, внесли ли вы ранее часть изменений для усиления безопасности на своем веб-сервере.

Обновление WinHTTP

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\
  DefaultSecureProtocols = (DWORD): 0xAA0
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\
  DefaultSecureProtocols = (DWORD): 0xAA0

Включите TLS 1.2, если вы еще этого не сделали

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001

Если ваше приложение 32-битное на 64-битной ОС, то также измените

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001

Настройте протоколы SCHANNEL, если вы еще этого не сделали, чтобы включить TLS 1.2

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
  "DisabledByDefault" = dword:00000000
  "Enabled" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
  "DisabledByDefault" = dword:00000000
  "Enabled" = dword:0xffffffff

Убедитесь, что TLS 1.1 совпадает с TLS 1.2, если вы хотите поддерживать его для устаревших приложений/браузеров. Рекомендуется отключить слабые шифры, такие как SSL, и, если можете, TLS 1.0 (DisableByDefault = dword:00000001 Enabled=00000001 для клиента и сервера. Эти записи находятся в TLS 1.0, который находится на том же уровне, что и TLS 1.1 и TLS 1.2), и перезагрузите компьютер.

Если все пойдет хорошо, ваше приложение снова заработает или, по крайней мере, появится обычное сообщение об угрозе безопасности из-за самоподписанного сертификата. Надеюсь, это сработает для вас, и, пожалуйста, проголосуйте, если это поможет вам решить проблему, и заранее спасибо.

Примечание: Вы можете установить/очистить правильные значения regedit, используя скрипты, представленные здесь:https://www.hass.de/content/setup-microsoft-windows-or-iis-ssl-perfect-forward-secrecy-and-tls-12

решение2

Я почувствовал необходимость опубликовать после долгих поисков этой статьи. По сути, она попала в точку.

У меня возникли некоторые проблемы - поэтому предлагаю.

  1. используйте скрипт внизу предложения с сайта MS. Его нужно запустить от имени администратора.
  2. Если скрипт не работает, удалите все созданные вами ключи, а затем повторите попытку.

Наконец, если проблема возникла из-за обновления до Server 2019, а ваш сервер IIS подключается к серверу SQL 2012, убедитесь, что он обновлен до SP4. :)

Связанный контент