现象描述
通过微软的 RDP 协议客户端 远程连接 Windows 实例时报错:出现身份验证错误,要求的函数不受支持(The function requested is not supported)。
现象
原因分析
微软官方 2018 年 5 月更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。当出现以下任一配置策略时会出现该连接错误:
配置策略一:客户端的策略为未修补,服务器端策略为强制更新的客户端。
配置策略二:客户端策略为强制更新的客户端,服务器端策略为未修补。
配置策略三:客户端的策略为缓解,服务器端策略为未修补。
(推荐)解决方法 1:下载安全更新
通过 远程连接功能 登录 Windows 实例。
搜索并打开 Windows 更新。
单击 检查更新 下载积累的更新。
Download
等待更新和安装完成。
重启实例以完成安装更新。
(可选)若您的客户端为 Windows 操作系统,在客户端中安装所有积累的安全更新。
您也可以根据自己的操作系统,在 Windows 实例和客户端上安装 CredSSP 对应的安全更新安装包:
Windows Server 2008 32位下载
Windows Server 2008 R2 64位安全更新下载
Windows Server 2008 R2 64位质量和安全更新下载
Windows Server 2012 R2 64位安全更新下载
Windows Server 2012 R2 64位质量和安全更新下载
Windows Server 2016 64位下载
Windows Server 1709 64位下载
解决方法 2:修改注册表
您可以选择手动修改注册表,也可以选择运行我们为您准备的 PowerShell 脚本。
警告:使用注册表编辑器或其他方法修改注册表不当,可能会出现严重问题。这些问题可能需要您重新安装操作系统。方法二会降低您本地计算机或实例的安全性,您需要自行承担修改注册表风险。因此,我们建议您使用 方法一。
说明:
当原因为策略配置一时,您需要通过 远程连接功能 登录并修复目标实例。当原因为策略配置二和三时,您需要修复本地计算机。
在修改注册表之前,建议您先通过 创建快照 备份数据,以免数据丢失。
手动修改
登录实例或者本地计算机。
单击 开始 > 运行,输入 regedit,单击 确定。
定位到 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParameters 键。如果 CredSSP 或者 Parameters 键不存在,请新建 CredSSP 或者 Parameters 键。
在 Parameters 键下新建 DWORD 值 AllowEncryptionOracle,并设置数据为 2。
注册表
重启实例或者本地计算机。
脚本修改
登录实例或者本地计算机。
以管理员身份运行以下 PowerShell 脚本。
New-Item -Path HKLM:SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem -Name CredSSP -Force
New-Item -Path HKLM:SoftwareMicrosoftWindowsCurrentVersionPoliciesSystemCredSSP -Name Parameters -Force
Get-Item -Path HKLM:SoftwareMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParameters | New-ItemProperty -Name AllowEncryptionOracle -Value 2 -PropertyType DWORD -Force
重启实例或者本地计算机。
说明:若您优先使用方法二修改了注册表,随后又更新了客户端和ECS实例安全补丁,我们建议您将 AllowEncryptionOracle 的数据设为 0 或者 1 以获得更高的安全性。
参考链接
CVE-2018-0886 的 CredSSP 更新
CVE-2018-0886 | CredSSP 远程执行代码漏洞
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。