2016-08-10 198 views
0

我有一個發送傳出請求的WCF服務。目前它使用SSL 3.0TLS 1.0在所有連接上將ServicePointManager.SecurityProtocol強制爲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_StartApplication_BeginRequestGlobal.asax,但它涉及到這樣做的請求的時間,SecurityProtocol是回SSL3/TLS1.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