簡體   English   中英

.NET 4.5.1中的WCF客戶端:如何在使用WebRequest時啟用TLS 1.2?

[英]WCF Client in .NET 4.5.1: How to enable TLS 1.2 when WebRequest is used?

我們的.net WCF客戶端,WebRequest調用,編譯到運行在Win2012-R2上的Windows EXE,拒絕連接到僅面向TLS 1.2的Web服務器

我們知道Win2012和.NET 4.5x支持TLS 1.2

當服務器表面TLS 1.0及更高版本時,我們沒有問題。 只有當我們連接的服務器具有DISABLED TLS 1.0,1.1和SSL2以及SSL3時才會出現此問題。 Server ONLY表面TLS 1.2。 Chrome和Firefox(在Win 7及更高版本上)可以很好地連接到服務器(沒有任何警告或SSL問題)。

服務器證書是%100 OK。

問題是WebRequest在這種情況下無法連接。

我們需要在代碼中設置什么,以便我們使用WebRequest將連接到可能運行TLS 1.2,1.1,1.0和/或SSL v3的系統?

您應該使用.NET 4.5或更高版本,並在您的代碼中添加以下行:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

雖然不容易理解,但所需的屬性是:

System.Net.ServicePointManager.SecurityProtocol

這可用於在WCF環境中禁用和啟用TLS級別。

此外,您可以看到WCF當前使用的內容:

Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());

感謝: 如何在.NET中禁用SSL回退並僅使用TLS進行出站連接? (貴賓犬緩解)

重要的是,您應該至少從.Net Framework v4.5開始。 舊版本支持TSL 1.2 稍后,在對服務器進行身份驗證時,請明確使用此協議:

    sslStream.AuthenticateAsClient(this._configuration.Host, null, SslProtocols.Tls12, true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM