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

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

0
задан 20 January 2020 в 23:17
2 ответа

Я получил ответ сам. Проблема заключалась в том, что с годами шифры менялись, но только для серверов 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- пересылка-секретность-и-TLS-12

2
ответ дан 21 January 2020 в 16:11

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

У меня были некоторые проблемы, так что предложения.

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

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

0
ответ дан 24 August 2021 в 22:37

Теги

Похожие вопросы