У меня есть приложение Windows Forms, которое развертывается с помощью щелчка один раз. Приложение было построено с .net 4.7.2 и использует HttpClient API для доступа к нескольким остальным веб-сервисам, которые размещены на внутреннем сервере. Как и следовало ожидать, доступ к службам возможен только через HTTPS, а сервер настроен на поддержку всех версий TLS (кстати, это сервер Windows 2016).
Клиентское приложение интрасети (т. е. приложение Windows Forms) развернуто в нескольких внутренних подсетях, и все работает хорошо, за исключением одного ПК (который принадлежит к определенной подсети — это единственный ПК, который использует это конкретное приложение). ). Этот компьютер сможет использовать службы только в том случае, если HttpClient настроен на использование TLS 1.1.
Поскольку мы используем внутренние сертификаты (у нас есть внутренний центр сертификации для нашей AD), я уже проверил, и сертификат с открытым ключом объекта уже присутствует в контейнере доверенных центров сертификации компьютера, где защищенный сеанс не может быть установлен через TLS 1.2.
ПК работает под управлением Windows 10 Pro (последняя версия), поэтому он должен поддерживать TLS 1.2. Я пытался эмулировать запросы от Fiddler, и правда в том, что я получу результаты только тогда, когда настройте для использования TLS 1.1.
Не устанавливая протокол TLS 1.1, я вижу, что Fiddler говорит, что рукопожатие не было установлено, и служба никогда не «выполняется».
Теперь, согласно тому, что я прочитал, у меня не должно было быть никаких проблем с кодом. На самом деле, мне не нужно указывать версию TLS (похоже, Windows 10 Pro имеет встроенную поддержку TLS 1.2, и это должно быть по умолчанию для WIndows 10. Поскольку я использую .NET 4.7.2, он должен автоматически использовать системный протокол по умолчанию), но правда в том, что только использование tls 1.1 (не tls 1.2!) позволяет установить безопасный канал.
Я пытался запустить код на других машинах, и все работает, как и ожидалось (я могу установить безопасный канал с помощью tls 1.1 или tls 1.2 или даже позволить ему использовать системный протокол по умолчанию).
Поскольку я на самом деле не сетевой парень, может ли кто-нибудь указать мне правильное направление? Как вы думаете, ребята, это может быть вызвано брандмауэром? Любые идеи?
Я имею в виду, похоже, что ПК распознает сертификат, используемый в сеансе HTTPS (если бы это было не так, я бы не смог использовать TLS 1.1, верно?), но похоже, что что-то мешает этому. не позволит мне использовать TLS 1.2...
Спасибо. Луис