有时调用 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.TaskFactory
1.FromAsyncCoreLogic(IAsyncResult iar,Func2 endFunction, Action
1 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 聊天机器人不起作用