Microsoft Dynamics 365 Customer Engagement (联机) 要求 TLS 1.2 进行连接

在Dynamics 365 (联机) 版本 9.x 和Dynamics 365 (联机) 政府版 8.2 中,我们将开始要求连接到客户参与应用程序,以利用 TLS 1.2 (或更好的) 安全性。 这符合更新的 Microsoft 和行业安全策略和最佳做法,可能需要采取措施来维护与 Dynamics 365 Customer Engagement 应用程序的连接。 查看以下信息,以帮助你确定是否受到影响以及可能需要采取哪些步骤。

适用于:Microsoft Dynamics 365
原始 KB 编号: 4051700

什么是 TLS?

TLS 代表 传输层安全性,是一种行业标准,旨在保护通过 Internet 通信的信息的隐私。 TLS 用于许多通过 HTTPS 和 TCP 进行通信的 Web 浏览器和应用程序。

有何变化?

目前,所有Dynamics 365 Customer Engagement 联机版本都支持 TLS 1.0、1.1 和 1.2,但从发布 Dynamics 365 (联机) 版本 9.x 和 Dynamics 365 (联机) 政府版 8.2 开始,我们将开始阻止使用 TLS 1.0 和 1.1 的客户端或浏览器连接到更新的产品。

注意

此更改仅影响 Microsoft Dynamics 365 Online Customer Engagement,而不会影响本地版本。

你或你的客户将受到怎样的影响?

如果不使用 TLS 1.2 安全协议,则与 Dynamics 365 (联机) 版本 9.x 或 Dynamics 365 (联机) 政府版 8.2 的任何连接都将失败。 这将影响以下) 列出的多个 Dynamics 服务 (,包括访问 Dynamics 365 Customer Engagement Web 应用程序。

你或你的客户如何避免受到影响?

对于支持的 Web 浏览器

Dynamics 365 Customer Engagement (版本 7.x - 版本 9.x) 支持的所有浏览器目前都符合 TLS 1.2 标准,并将继续像以前一样工作。 但是,如果在浏览器中禁用了 TLS 1.2 协议,则会受到影响并失去与组织的连接。

适用于 Microsoft 提供的开发人员工具

请参阅 9.0 版中 Customer Engagement 开发人员文档的新增 功能,获取开发人员工具文档的最新信息。 从 NuGet 更新到开发中使用的 最新版本的工具。 开发人员工具的示例包括插件注册工具和配置迁移工具。 这些工具的版本 9.0 向后兼容,可用于Dynamics 365 (联机) 版本 8.2 政府版。

对于使用 Dynamics 365 SDK 生成的代码

使用 .NET Framework 4.6.2 或更高版本重新编译客户端应用程序。 如果代码已使用 .NET 4.6.2 或更高版本进行编译,则无需执行任何操作。 对于自定义插件和工作流程序集,应继续使用 .NET 4.5.2。

Visual Studio 2015 的已知问题

在调试模式下在 Visual Studio 2015 中运行项目/解决方案时,存在一个已知问题,即可能无法联机连接到 Dynamics 365 () 版本 9.x 或Dynamics 365 (联机) 版本 8.2 政府版。 无论使用的是 4.6.2 或更高版本的目标框架,都会发生这种情况。 出现这种情况的原因是 Visual Studio 托管进程是针对 .NET 4.5 编译的,这意味着默认情况下它不支持 TLS 1.2。 可以禁用 Visual Studio 托管过程作为解决方法。 在 Visual Studio 中右键单击项目的名称,然后单击“属性”。 在“ 调试 ”选项卡上,可以取消选中 “启用 Visual Studio 托管进程 ”选项。

注意

这只会影响 Visual Studio 2015 中的调试体验。 这不会影响生成的二进制文件或可执行文件。 Visual Studio 2017 中不会出现相同的问题。

基于 .NET 的应用的一个重要注意事项

可以使用以下命令强制使用 TLS 1.2 协议:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

这会一直强制使用 TLS 1.2 安全协议。 不建议这样做,因为当行业采用较新的安全协议时,存在必须更新此协议的风险。

对于无法重新编译的现有代码

可以在 Windows 上利用注册表设置,该设置将强制 .NET 使用可能的最高安全标准。

注意

这是计算机范围的设置,可能会产生意外的影响。 建议你或你的客户使用重新编译到 .NET 4.6.2 或更高版本的方法。

若要更新强制 .NET 4.5.2 首选 TLS 1.2 的注册表设置,请参阅 Microsoft 安全公告2960358 文章。 请参阅“在运行 .NET Framework 4.5/4.5.1/4.5.2 的系统上手动禁用 TLS 中的 RC4”下的建议操作部分。

对于非 .NET 软件

请与供应商联系,了解如何启用 TLS 1.2。 对于大多数语言,可以使用简单的配置条目来完成此操作。

对于 PowerShell

在调用 Get-CrmConnection之前将 添加到 [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12 PowerShell 脚本。

对于 Microsoft Outlook 的Dynamics 365

Dynamics 365 (联机) 政府版本 8.2 和 Dynamics 365 (联机) 版本 9.x

统一服务台 () 美元

下载 最新版本的 Unified Service Desk (版本 3.1、3.2 和 3.3 符合 TLS 1.2) 。

如果要继续使用旧版统一服务台,则需要 更新客户端桌面的注册表项

对于报表创作Dynamics 365

Dynamics 365 (联机) 政府版 8.2

Dynamics 365 (9.x 版联机)

对于Email路由器的Dynamics 365

Dynamics 365 (联机) 政府版 8.2

Dynamics 365 (9.x 版联机)

示例错误

下面是使用非 TLS 1.2 安全协议时可能会遇到的一些潜在连接错误:

浏览器错误

“无法安全地连接到此页面
这可能是因为站点使用过时或不安全的 TLS 安全设置。 这种情况不断发生,请尝试联系网站的所有者。

连接器错误

“Microsoft.Xrm.Tooling.CrmConnectControl 信息:8:连接中的登录状态为 = 正在验证与Microsoft Dynamics CRM的连接...

Microsoft.Xrm.Tooling.Connector.CrmServiceClient 错误:2:从身份验证上下文请求令牌时出错

Microsoft.Xrm.Tooling.Connector.CrmServiceClient 错误: 2 : 源 : mscorlib

方法:ThrowIfExceptional

错误: 发生一个或多个错误

堆栈跟踪:位于 System.Threading.Tasks.Task.ThrowIfExceptional (布尔值 includeTaskCanceledExceptions)

at System.Threading.Tasks.Task'1.GetResultCore (Boolean waitCompletionNotification)

at System.Threading.Tasks.Task'1.get_Result ()

at Microsoft.Xrm.Tooling.Connector.CrmWebSvc.ExecuteAuthenticateServiceProcess (Uri serviceUrl, ClientCredentials clientCredentials、UserIdentifier 用户、String clientId、Uri redirectUri、PromptBehavior promptBehavior、String tokenCachePath、Boolean isOnPrem、String authority、Uri& targetServiceUrl、AuthenticationContext& authContext、String& resource)

内部异常级别 1 :

源:Microsoft.IdentityModel.Clients.ActiveDirectory

方法:Close

错误: 对象引用未设置为对象的实例

堆栈跟踪:at Microsoft.IdentityModel.Clients.ActiveDirectory.HttpWebResponseWrapper.Close ()

at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters。<CreateFromResourceUrlCommonAsync>d__0.MoveNext ()

---从以前引发异常的位置结束堆栈跟踪---

at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task)

at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task)

at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters。<CreateFromResourceUrlAsync>d__8.MoveNext () ”

开发人员工具错误

“内部异常级别 1 :

源:系统

方法:GetResponse

错误: 基础连接已关闭:发送时发生意外错误

堆栈跟踪:at System.Net.HttpWebRequest.GetResponse ()

at System.ServiceModel.Description.MetadataExchangeClient.MetadataLocationRetriever.DownloadMetadata (TimeoutHelper timeoutHelper)

at System.ServiceModel.Description.MetadataExchangeClient.MetadataRetriever.Retrieve (TimeoutHelper timeoutHelper)

内部异常级别 2 :

源:系统

方法:Read

错误: 无法从传输连接读取数据:远程主机强行关闭了现有连接。

堆栈跟踪:位于 System.Net.Sockets.NetworkStream.Read (Byte[] 缓冲区、Int32 偏移量、Int32 大小)

at System.Net.FixedSizeReader.ReadPacket (Byte[] buffer, Int32 offset, Int32 count)

at System.Net.Security.SslState.StartReceiveBlob (Byte[] buffer,AsyncProtocolRequest asyncRequest) ”

其他信息