[英]supporting TLS 1.2 in HttpClient C#
下午好! 我使用 HttpClient 使用 Azure Maps API。 如何啟用對 TLS 1.2 的支持? 據我所知,在 Framework 4.6+ 中它是受支持的。 我不應該為此做任何事情嗎?
使用ServicePointManager設置安全協議。
獲取或設置由 ServicePointManager 對象管理的 ServicePoint 對象使用的安全協議。
HttpClient httpClient = new HttpClient();
//specify to use TLS 1.2 as default connection
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
此屬性選擇用於新連接的安全套接字層 (SSL) 或傳輸層安全 (TLS) 協議的版本; 現有連接不會改變。
從 .NET Framework 4.7 開始,此屬性的默認值為 SecurityProtocolType.SystemDefault。 這允許基於 SslStream 的 .NET Framework 網絡 API(例如 FTP、HTTP 和 SMTP)從操作系統或系統管理員執行的任何自定義配置繼承默認安全協議。
通常,您無需在應用程序中指定任何配置即可采用最新的 TLS 協議。
docs.microsoft.com上概述了 .Net 4.7 之前的最佳實踐和方案。
在高層次上,您應該進行審核以確保您的應用程序不會對較低的 TLS 版本產生任何硬依賴。 但除此之外,不需要任何工作。
我們建議您:
- 在您的應用上以 .NET Framework 4.7 或更高版本為目標。 在 WCF 應用程序上定位 .NET Framework 4.7.1 或更高版本。
- 不要指定 TLS 版本。 配置您的代碼,讓操作系統決定 TLS 版本。
- 執行徹底的代碼審計以驗證您沒有指定 TLS 或 SSL 版本。
當您的應用讓操作系統選擇 TLS 版本時:
- 它會自動利用未來添加的新協議,例如 TLS 1.3。
- 操作系統會阻止被發現不安全的協議。
值得探索有關TLS 最佳實踐的Microsoft 文檔
對我來說,問題是通過添加以下注冊表項之一解決的:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
此處提供Microsoft 官方答案
它看起來像這樣:
private static void Main(string[] args)
{
var httpClient = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false, SslProtocols = System.Security.Authentication.SslProtocols.Tls12 });
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var response = httpClient.GetAsync("http//myurl.com").GetAwaiter().GetResult();
}
但不適用於我們所有的項目(包括 != 4.7.1 框架項目),如果有,請添加信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.