我有一个发送传出请求的WCF服务。目前,它使用SSL 3.0
或TLS 1.0
。
我发送请求的服务现在只接受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
答案 0 :(得分:1)
如果您有权访问注册表,则可以应用以下密钥: registry key
这会在传输层的Windows级别强制执行TLS 1.2,因此您无需更改任何代码。
这些是上述文件中更改的键:
[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
答案 1 :(得分:0)
在 Startup.Auth.cs 文件中添加这一行。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
这对我们有用。