WCF Client в .NET 4.51: Как включить TLS 1.2 при использовании WebRequest?
Наш .net WCF-клиент, вызов WebRequest, скомпилированный в Windows EXE, работающий на Win2012-R2, отказывается подключаться к веб-серверу, на котором работает ТОЛЬКО TLS 1.2
Мы знаем, что Win2012 и .NET 4.5x поддерживают TLS 1.2
У нас нет проблем, когда сервер обрабатывает TLS 1.0 и выше. Проблема возникает только при подключении к серверу DISABLED TLS 1.0, 1.1 и SSL2 и SSL3. Сервер ТОЛЬКО обрабатывает TLS 1.2. Chrome и firefox (на Win 7 и выше) прекрасно подключаются к серверу (никаких предупреждений или проблем с SSL не существует).
Сертификат сервера равен% 100.
Проблема в том, что WebRequest не может подключиться в этой ситуации.
Что нам нужно установить в коде, чтобы наше использование WebRequest соединилось с системами, которые могут запускать TLS 1.2, 1.1, 1.0 и/или SSL v3?
Ответы
Ответ 1
Пока нелегко понять, требуемое свойство:
System.Net.ServicePointManager.SecurityProtocol
Это можно использовать для отключения и включения уровней TLS в среде WCF.
Кроме того, вы можете видеть, что WCF в настоящее время настроен на использование:
Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());
Благодаря:
Как отключить отключение SSL и использовать только TLS для исходящих подключений в .NET? (Смягчение пуделя)
Ответ 2
Вы должны работать с версией .NET 4.5 или выше и добавить эту строку в свой код:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;