2016-08-10 5 views
0

У меня есть служба WCF, которая отправляет исходящий запрос. В настоящее время используется SSL 3.0 или TLS 1.0.Force ServicePointManager.SecurityProtocol to TLS 1.2 для всех подключений

Услуга, я посылаю запрос, принимает только TLS 1.2.

Я могу установить SecurityProtocolType непосредственно перед запросом (и для каждого запроса), но я бы хотел, чтобы он использовал TLS 1.2 для всех исходящих запросов без указания его для каждого запроса.

Этот код устанавливает его правильно для запроса:

<OperationContract(), WebGet(UriTemplate:="...")> 
Public Function SomeService() 

    System.Net.ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType) 3072; // 3072 is TLS 1.2 

    // Do request 

End Function 

Но я не могу видеть, как настроить WCF использовать TLS 1.2 для всех запросов. Я попытался поместить вышеуказанное заявление в Application_Start и Application_BeginRequest в Global.asax, но к тому времени он приходит делать запрос, SecurityProtocol возвращается к SSL3/TLS1.0

ответ

1

Если у вас есть доступ к реестру можно применить следующий ключ: registry key

Это обеспечивает TLS 1.2 на уровне уровня транспортного уровня Windows, поэтому вам не нужно менять какой-либо код.

Это ключи, измененные в указанном файле:

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

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