【问题标题】:Intermittent SSL/TLS error using Azure SDK in Azure Website在 Azure 网站中使用 Azure SDK 时出现间歇性 SSL/TLS 错误
【发布时间】:2015-04-02 03:45:20
【问题描述】:

我有一个在 Azure 网站中运行 .NET 4.5 的 ASP.NET MVC 网站,我在尝试使用 Azure SDK(版本 4.3.0)检索或上传资产到 Azure Blob 存储时不断收到此错误。

请求被中止:无法创建 SSL/TLS 安全通道。

Microsoft.WindowsAzure.Storage.StorageException:请求是
中止:无法创建 SSL/TLS 安全通道。 --->
System.Net.WebException:请求被中止:无法创建
SSL/TLS 安全通道。在 System.Net.HttpWebRequest.GetResponse()

Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T] (RESTCommand`1 cmd, IRetryPolicy 策略, OperationContext operationContext) ---
内部异常堆栈跟踪结束 --- at
Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1
cmd, IRetryPolicy 策略, OperationContext operationContext) at
Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient.GetBlobReferenceFromServer(StorageUri
blobUri、AccessCondition accessCondition、BlobRequestOptions 选项、
OperationContext operationContext) 在
Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient.GetBlobReferenceFromServer(Uri
blobUri、AccessCondition accessCondition、BlobRequestOptions 选项、
OperationContext operationContext)

错误不会每次都发生,但一旦开始发生,它就会连续发生。只有当我向上或向下缩放 Azure 网站以重置网站时,错误才会停止。它会持续几个小时或几天,然后又会回来。

这似乎是在 Poodle 漏洞出现时开始发生的,并且网站关闭了对 SSL3 的支持。从我所做的研究看来,如果 Azure SDK 尝试通过 SSL3 连接到 Azure Blob 存储,则可能出现此错误。由于它可以正常工作一段时间,我想知道我的应用程序中的某些库是否将 ServicePointManager.SecurityProtocol 设置为 SSL3,这是 Azure 从那时起在导致错误时使用的全局设置。有什么想法可以确定这是否正在发生或如何找到将回退设置为 SSL3 的代码?

【问题讨论】:

  • @ATechieThought 我认为这不是问题,因为这与安装正确的客户端证书有关,而使用 Azure SDK 不需要。该代码也可以正常工作一段时间,直到它停止工作。
  • 这肯定是 SSL-TLS 问题。从异常消息中可以很明显地看出。还尝试查看来自可能是提琴手之类的工具的请求标头。 blogs.msdn.com/b/ieinternals/archive/2011/03/26/…
  • 我有一个类似的问题.. 我从来没有能够在本地或几乎相同的其他天蓝色站点上重现它,只是在生产站点上(也许这与比仅开发站点有更多的请求有关? )。让我抓狂的是,它完美地运行了几天,然后开始出现这个错误.. 作为一个生产环境,我不能过多地摆弄它:(

标签: c# asp.net-mvc azure-web-app-service azure-sdk-.net poodle-attack


【解决方案1】:

【讨论】:

  • 感谢@Meteorpoly 的链接,但这不是证书问题。如果它是一个丢失的证书,它会完全起作用,有时它会起作用。我想我已经深究了。我有 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;而不是像这样支持所有 Tls:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls |安全协议类型.Tls11 | SecurityProtocolType.Tls12;
  • @Austin - 您能否将其添加为答案(它可能很旧,但它就是答案!)
【解决方案2】:

重新启动后删除并重新安装证书为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多