如何解决 Windows 实例出现身份验证错误及更正 CredSSP

现象描述

通过微软的 RDP 协议客户端 远程连接 Windows 实例时报错:出现身份验证错误,要求的函数不受支持(The function requested is not supported)。

如何解决 Windows 实例出现身份验证错误及更正 CredSSP

原因分析

微软官方 2018 年 5 月更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。当出现以下任一配置策略时会出现该连接错误:

  • 配置策略一:客户端的策略为未修补,服务器端策略为强制更新的客户端。

  • 配置策略二:客户端策略为强制更新的客户端,服务器端策略为未修补。

  • 配置策略三:客户端的策略为缓解,服务器端策略为未修补。

(推荐)解决方法 1:下载安全更新

  1. 通过 远程连接功能 登录 Windows 实例。

  2. 搜索并打开 Windows 更新

  3. 单击 检查更新 下载积累的更新。

    如何解决 Windows 实例出现身份验证错误及更正 CredSSP

  4. 等待更新和安装完成。

  5. 重启实例以完成安装更新。

  6. (可选)若您的客户端为 Windows 操作系统,在客户端中安装所有积累的安全更新。

您也可以根据自己的操作系统,在 Windows 实例和客户端上安装 CredSSP 对应的安全更新安装包:

解决方法 2:修改注册表

您可以选择手动修改注册表,也可以选择运行我们为您准备的 PowerShell 脚本。

警告:使用注册表编辑器或其他方法修改注册表不当,可能会出现严重问题。这些问题可能需要您重新安装操作系统。方法二会降低您本地计算机或实例的安全性,您需要自行承担修改注册表风险。因此,我们建议您使用 方法一

说明

  • 当原因为策略配置一时,您需要通过 远程连接功能 登录并修复目标实例。当原因为策略配置二和三时,您需要修复本地计算机。
  • 在修改注册表之前,建议您先通过 创建快照 备份数据,以免数据丢失。

手动修改

  1. 登录实例或者本地计算机。

  2. 单击 开始 > 运行,输入 regedit,单击 确定

  3. 定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters 键。如果 CredSSP 或者 Parameters 键不存在,请新建 CredSSP 或者 Parameters 键。

  4. 在 Parameters 键下新建 DWORD 值 AllowEncryptionOracle,并设置数据为 2

    如何解决 Windows 实例出现身份验证错误及更正 CredSSP

  5. 重启实例或者本地计算机。

脚本修改

  1. 登录实例或者本地计算机。

  2. 以管理员身份运行以下 PowerShell 脚本。

     
    1. New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name CredSSP -Force
    2. New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP -Name Parameters -Force
    3. Get-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters | New-ItemProperty -Name AllowEncryptionOracle -Value 2 -PropertyType DWORD -Force
  3. 重启实例或者本地计算机。

说明:若您优先使用方法二修改了注册表,随后又更新了客户端和ECS实例安全补丁,我们建议您将 AllowEncryptionOracle 的数据设为 0 或者 1 以获得更高的安全性。

参考链接