有时调用 Microsoft Azure 托管的 WCF 服务会导致“SSL/TLS 的信任关系”问题

Posted

技术标签:

【中文标题】有时调用 Microsoft Azure 托管的 WCF 服务会导致“SSL/TLS 的信任关系”问题【英文标题】:From time to time calling Microsoft Azure hosted WCF service results in "trust relationship for the SSL/TLS" issues 【发布时间】:2019-11-20 14:45:12 【问题描述】:

通过标准 https://*.azurewebsites.net 地址调用 Azure 托管的 WCF 服务时,有时会导致“SSL/TLS 的信任关系”问题。它工作了好几个月。几天前问题开始出现,我的代码没有任何更改。通常重试是解决问题,操作成功完成。

我在 Azure 门户中尝试了几个选项,包括将 TLS 版本从 1.0 更改为 1.1 和 1.2,我尝试使用自定义 SSL 安全域,但问题仍然出现。

我的确切例外是:

无法为具有“my-address.azurewebsites.net”权限的 SSL/TLS 安全通道建立信任关系。根据验证程序,远程证书无效。

在 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 结果) 在 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult 结果) 在 System.ServiceModel.Channels.ServiceChannel.EndCall(字符串操作,对象 [] 输出,IAsyncResult 结果) 在 System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator.c__DisplayClass7_01.<CreateGenericTask>b__0(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar,Func2 endFunction, Action1 endAction,Task`1 承诺,布尔要求同步) --- 从之前抛出异常的位置结束堆栈跟踪 ---

【问题讨论】:

【参考方案1】:

如您所知,该错误主要表示服务器和客户端之间没有建立信任关系。常见的方法是在本地 RootCA 中安装服务器证书。您可以使用浏览器地址栏下载证书。 或者,我们可以在调用服务之前添加以下代码段以信任服务器。

ServicePointManager.ServerCertificateValidationCallback += delegate
            
                return true;
            ;

此外,建立通信需要操作系统版本和 Dotnet 框架版本支持。请参考以下文档。https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls 我们最好升级应用程序目标框架/操作系统以支持 TLS1.2+。 如果有什么可以帮助的,请随时告诉我。

【讨论】:

以上是关于有时调用 Microsoft Azure 托管的 WCF 服务会导致“SSL/TLS 的信任关系”问题的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Azure 通知错误:404 指定地址没有托管服务

如何使用 Microsoft.WindowsAzure.Storage.Table.CloudTableClient 授权托管标识访问 Azure 表存储

如何通过托管服务器Microsoft azure连接我的域(例如:www.xyz.com)? [关闭]

如何使用 Google FCM 和 Microsoft azure 作为托管服务器从 chrome for android 上的 PWA 发送推送通知

我们可以在 IIS 中部署 Microsoft bot 应用程序以在没有 Azure 的情况下进行托管吗?

IIS 托管的 Azure Bot 通道注册 Microsoft Bot Framework sdk 聊天机器人不起作用