如何解决通过远程桌面连接Windows时提示"出现身份验证错误,要求的函数不受支持"

问题现象


通过远程桌面连接Windows服务器时,出现错误提示“出现身份验证错误,要求的函数不受支持,远程计算机:x.x.x.x,这可能是由于CredSSP加密数据库修正”。

问题原因


微软官方于2018年5月,更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。默认情况下,安装此更新后,修补的客户端无法与未修补的服务器进行通信。

说明
加密Oracle修正是操作系统内的一种策略设置,此策略设置可应用于使用CredSSP组件(例如,远程桌面连接)的应用程序。

当遇到如下任一情况时,会出现该连接错误:

  • 情景一:本地电脑未更新该补丁,Windows服务器已更新该补丁且加密Oracle修正的策略为“强制更新的客户端”。
  • 情景二:本地电脑已更新该补丁且加密Oracle修正的策略为“强制更新的客户端”,Windows服务器未更新该补丁。
  • 情景三:本地电脑已更新该补丁且加密Oracle修正的策略为“已缓解”,Windows服务器未更新该补丁。

说明

  • 未更新该补丁,指没有更新自2018年5月起至今的任意版本补丁,包括最新版本补丁。
  • 已更新该补丁,指更新过自2018年5月起至今的任意版本补丁或者所有版本补丁,包括最新版本补丁。
  • 更多加密Oracle修正的策略信息,请参见CVE-2018-0886的CredSSP更新

互操作性矩阵


服务器
未修补 强制更新的客户端 已缓解 易受攻击
客户端 未修补 允许 阻止 允许 允许
强制更新的客户端 阻止 允许 允许 允许
已缓解 阻止 允许 允许 允许
易受攻击 允许 允许 允许 允许

解决方法


客户端操作

修改组策略

  1. 按“Win+R键”,打开运行窗口,输入“gpedit.msc”,单击“确定”,打开本地组策略编辑器

  1. 依次展开 计算机配置 > 管理模板 > 系统 > 凭据分配

  1. 双击“加密Oracle修正”,设置为“已启用”,“保护级别”设置为“易受攻击”,单击“确定

  1. 按“Win+R键”,打开运行窗口,输入“cmd”,单击“确定”,打开命令提示符。执行 “gpupdate/force”命令对组策略进行刷新,使配置的组策略生效

  2. 尝试登录服务器

服务器操作

说明
完成以上操作后在上述客户端上应该就可以正常登录服务器了,但是按照互操作性矩阵,在其他更新了补丁的客户端可能还是会出现无法登录的情况,为了一劳永逸,建议在服务器上进行以下操作,其中安装补丁后需要重启计算机,请自行选择合适的时间窗口重启,避免影响业务。

下载并安装CredSSP远程执行代码漏洞补丁

说明
如已安装可忽略此步
在修改组策略时如果没有加密Oracle修正的选项则说明机器没有安装漏洞补丁

  1. 根据自己的系统版本到CVE-2018-0886-安全更新程序指南-Microsoft-CredSSP远程执行代码漏洞选择下载响应的补丁(本文以Windows Server 2012 R2为例)

  1. 双击运行下载的补丁,安装完成后需要重启计算机。

修改组策略

  1. 按“Win+R键”,打开运行窗口,输入“gpedit.msc”,单击“确定”,打开本地组策略编辑器

  1. 依次展开 计算机配置 > 管理模板 > 系统 > 凭据分配

  1. 双击“加密Oracle修正”,设置为“已启用”,“保护级别”设置为“易受攻击”,单击“确定

  1. 按“Win+R键”,打开运行窗口,输入“cmd”,单击“确定”,打开命令提示符。执行 “gpupdate/force”命令对组策略进行刷新,使配置的组策略生效

参考文档