在 Azure 网站中使用 Azure SDK 时出现间歇性 SSL/TLS 错误

Posted

技术标签:

【中文标题】在 Azure 网站中使用 Azure SDK 时出现间歇性 SSL/TLS 错误【英文标题】:Intermittent SSL/TLS error using Azure SDK in Azure Website 【发布时间】: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 的代码?

【问题讨论】:

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

请按照此处所述检查您的证书权限: https://social.msdn.microsoft.com/Forums/azure/en-US/efb73b00-3610-4a21-ae16-80543451a4d0/windows-azure-dynamicscaling-problem?forum=windowsazuredevelopment

【讨论】:

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

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

【讨论】:

以上是关于在 Azure 网站中使用 Azure SDK 时出现间歇性 SSL/TLS 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 ServiceBusProcessor 时出错 - Azure.Messaging.ServiceBus SDK

Azure SDK for .NET 中基于任务的 API 中的并发性

发布时未发现 Azure SDK 存储程序集异常

在 Azure Functions 上使用 Box SDK 时出错

azure sdk deleteAsync 请求内容 null

使用 Azure JS SDK for Service Bus 时需要关闭连接吗?