У меня возникли проблемы с TLS 1.2 на моем Windows Server 2012 R2 (веб-сервер приложений, IIS), из-за которых я не могу получить доступhttps://api.nuget.org/v3/index.jsonчерез Internet Explorer даже после того, как я вижу, что TLS 1.2 включен.
У меня есть другой сервер с той же ОС и теми же обновлениями ОС (но без IIS), и у этого сервера нет проблем с доступом к API или любой другой конечной точке с TLS 1.2)
На проблемном сервере я попробовал следующее:
- Использовал IISCrypto, чтобы включить все -> Перезапустить -> НЕУДАЧНО
- Измените параметры реестра вручную, следуя документации Microsoft -https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2- НЕУСПЕШНЫЙ
- Использовал следующий скрипт для полного сброса и повторного включения только TLS 1.2 - https://www.hass.de/content/setup-microsoft-windows-or-iis-ssl-perfect-forward-secrecy-and-tls-12- НЕУСПЕШНЫЙ
На данный момент я потратил почти 3 дня на устранение неполадок и выяснение, в чем проблема между этими двумя серверами, почему один сервер Windows работает, а другой нет.
Любые советы, шаги по устранению неполадок или инструменты будут приветствоваться!
решение1
Итак, после нескольких часов устранения неполадок мне наконец удалось решить проблему и сделать API доступным с нашего сервера по протоколу TLS 1.2.
У нас на сервере есть .net framework, у которого возникли проблемы с доступом к API. Microsoft рекомендует установить следующий реестр для принудительного использования SystemDefaultTlsVersions
Windows Registry Editor Version 5.00
[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
[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
решение2
Моя репутация крайне низкая, поэтому мне придется написать ответ.
Сообщение браузера может вводить в заблуждение
Вам следует проверить, разрешает ли DNS ту же цель и обнаруживает ли клиент какой-либо прокси-сервер.
Это может быть проверка пакетов брандмауэром, возможно, с помощью прозрачного прокси-сервера.
Проверьте, какой ответ вы получаете с помощью s_client в openssl: https://stackoverflow.com/questions/7885785/using-openssl-to-get-the-certificate-from-a-server
Используйте DeveloperTools в браузере, чтобы просмотреть раздел «Сеть» и увидеть, куда был отправлен ваш запрос (возможно, через прокси-сервер) и какой ответ вы получили.
Отключите некоторые проверки SSL/TLS в Powershell: https://stackoverflow.com/questions/34331206/ignore-ssl-warning-with-powershell-downloadstring
Проверьте, что у обоих одинаковая конфигурация сети относительно IPv6. Возможно, один из них подключается к другому серверу из-за этого.
EDIT: по крайней мере, сделайте проверку openssl, чтобы убедиться, что вы можете получить правильный сертификат. Отключите проверку SSL/TLS для Powershell, и тестирование поможет убедиться в проблеме.