簡體   English   中英

服務器錯誤:請求已中止:無法創建SSL / TLS安全通道

[英]Server Error: The request was aborted: Could not create SSL/TLS secure channel

我收到錯誤消息The request was aborted: Could not create SSL/TLS secure channel. 在向cloudflare的https端點發出請求時。

碼:

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    var wc = new WebClient();
    var json = wc.DownloadString("https://cloudflare.com");
    Console.Write(json);

這是Stack上的一個常見問題,在其中將ServicePoint設置為TLS12即可對其進行修復。 可以在本地為我修復。 但是,每當我將代碼升級到服務器時,錯誤都會再次出現(並且我很肯定我的代碼更改已應用。)如果刪除https並使用http,則可以正常工作。

經過大量搜索之后,我發現此知識庫文章: https : //support.microsoft.com/en-us/kb/3109853我在Server1上安裝了它,但它沒有解決問題。

有人知道還能嘗試什么嗎? 一定是有關導致此問題的服務器環境的。 .NET修復/安全更新是最新的。

[WebException: The request was aborted: Could not create SSL/TLS secure channel.]
   System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) +823
   System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) +84

[HttpRequestException: An error occurred while sending the request.]
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +181
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +66
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +30
   TrackerBase.Controllers.<Verify>d__0.MoveNext() +535
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +181
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +66
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +30
   lambda_method(Closure , Task ) +40
   System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +76
   System.Web.Mvc.Async.<>c__DisplayClass3f.<BeginInvokeAsynchronousActionMethod>b__3e(IAsyncResult asyncResult) +21
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +80
   System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +386
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +30
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +185
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +900
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +1299
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +27
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +22
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +43
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +22
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
   System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +18

沒有任何特定的原因導致該代碼在Windows 2012上失敗,TLS可用並默認打開(我在一些新的2012R2盒子上測試了您的代碼示例,因為我很偏執:)。

這意味着您的特定服務器的某些配置正在阻止使用TLS 1.2的連接。 檢查以下內容:

  • 在注冊表中,檢查HKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols SSL 2.0以外的協議是否被禁用(甚至提到)?
  • 在服務器上的事件日志中,連接事件失敗后是否有任何Schannel事件?
  • 在服務器上,使用瀏覽器打開https://cloudfare.com 右鍵單擊屬性(假設為IE),它說的是TLS 1.2, AES with 128 bit encryption (High)嗎? 如果沒有,瀏覽器決定使用其他協議,因為客戶端系統上不支持TLS 1.2。

暫無
暫無

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

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