2016-06-26 8 views
0

cloudflare에서 https 끝점에 대한 요청시 오류 The request was aborted: Could not create SSL/TLS secure channel.이 표시됩니다.서버 오류 : 요청이 중단되었습니다. SSL/TLS 보안 채널을 만들 수 없습니다.

코드 :

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

이 TLS12이를 해결하기 위해 ServicePoint 설정 스택에 대한 자주 묻는 질문입니다. 그것은 나를 위해 그것을 로컬로 수정합니다. 그러나 서버에 코드를 승격시킬 때마다 오류가 다시 발생합니다 (코드 변경 사항이 적용된 것이 확실합니다). https를 제거하고 http를 사용하면 정상적으로 작동합니다.

수십만의 검색 후에 발견 된 KB : 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 
+0

코드를 표시 할 수 있습니까? 당신은 우리에게 문제가 무엇인지를 보여 주었지만, 당신이하고있는 일이나 당신이 어떻게하려고하는지에 대해 알려주지 않았습니다. 우리는 오류를 스스로 재현 할 수있을만큼 충분히 볼 필요가 있습니다. – user1666620

+0

@ user1666620 코드와 함께 질문이 업데이트되었습니다. 나는 최고 라인을 주석 처리 할 수 ​​있었고, 에러를 재현하기 위해 dotnetfiddle에 드롭 할 수 있었다. 주석 처리를 제거하면 작동합니다. 하지만 제 서버에는 없습니다. – bladefist

답변

1

그 코드는 윈도우 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를 사용할 수 없으므로 브라우저가 다른 프로토콜을 사용하기로 결정했습니다.
+0

TLS 1,1.1,1.2가 활성화 된 유일한 프로토콜입니다. Internet Explorer 11에서 사이트를 열려고했는데 '고급 설정에서 TLS 1.0, TLS 1.1 및 TLS 1.2를 켭니다.'라고 말하면 고급 설정을 확인했는데 모두 활성화되었습니다. 그래서 뭔가가 확실히 올라갔습니다. 크롬은 작동합니다. 나는 IE 오류에 약간을 봤 거든 많이 오지 않아. – bladefist

+0

다른 Windows 서버를 검사했지만 제대로 작동합니다. IE11 문제가 아닙니다. – bladefist

+0

나는 그것을 이해했다. 분명히 푸들이 떨어졌을 때, 나는 안전하지 않은 프로토콜 (ssl 3)을 사용하지 못하도록하는 도구를 사용했고 그 모범 사례의 일부는 나에게 일부 암호를 사용하지 못하게했습니다. 다른 서버가 아직 업데이트되지 않았습니다. 따라서 모범 사례가 항상 모범 사례는 아닙니다. – bladefist

관련 문제