[英]SSL connection could not be established
作為自動化測試的一部分,我在發送 HTTP 請求時遇到問題,我想檢查 URL 的狀態代碼。 當我發送請求時,我有一個例外:
System.AggregateException: '發生一個或多個錯誤。 (無法建立 SSL 連接,請參閱內部異常。)'
內部例外是:
HttpRequestException: 無法建立 SSL 連接,請參閱內部異常。
IOException:無法從傳輸連接讀取數據:遠程主機強制關閉現有連接。
SocketException: 現有連接被遠程主機強行關閉。
我的代碼:
public HttpStatusCode SendRequest(string _url)
{
SetUrl(_url);
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => { return true; };
clientHandler.SslProtocols = SslProtocols.Tls;
HttpClient client = new HttpClient(clientHandler);
var response = client.GetAsync(Url).Result;
StatusCode = response.StatusCode;
return StatusCode;
}
先感謝您 !
遠程主機確實(理所當然地)不接受您要使用已棄用的 TLS 1.0 進行連接。
指定 .Tls12 或 .Tls13。
正如@CodeCaster 已經提到的: SslProtocols.Tls
(TLS 1.0) 現在不是一種選擇。 只需使用SslProtocols.None
(這是默認設置)讓操作系統為您選擇最佳選項:
無:允許操作系統選擇要使用的最佳協議,並阻止不安全的協議。 除非您的應用程序有特定原因不這樣做,否則您應該使用此字段。
此外,跳過服務器證書驗證(通過讓ServerCertificateCustomValidationCallback
返回 true)是一件非常危險的事情。 你應該避免這種情況。
遠程主機是否在您的控制之下? 你能檢查一下它使用的是哪個 TLS 版本嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.