www.cftea.com

mstsc 远程桌面要求的函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正。

ITPOW2018/5/10 9:00:53

这几天用 mstsc Windows 远程桌面的朋友可能会遇到错误:

出现身份验证错误。
要求的函数不受支持
这可能是由于 CredSSP 加密 Oracle 修正。
若要了解详细信息,请访问 https://go.microsoft.com/fwlink/?linkid=866660

这可能是由于 CredSSP 加密 Oracle 修正。

这都是什么垃圾翻译呀,狗屁不通。

其实事情是这样的:

远程桌面使用的是“凭据安全支持提供程序协议 (CredSSP) ”,这个协议在未修补的版本中是存在漏洞的。

于是微软在 2018 年 3 月 13 日在补丁中解决了这个问题,但是默认并没有强制使用新的协议,因为一旦强制使用,假如服务器端和客户端不匹配,将无法连接。所以用户并不会感知到。

在 2018 年 5 月 8 日,微软在补丁中将客户端策略提严了一点,mstsc 登录就会有提示了,就会出现如上的错误了,用户就会知道这事了。

更进一步

关于微软这次更新,有个配置,更改这个配置可以决定是使用以前的那种连接,还是修补过的连接。这个问题会影响到服务器端客户端 ,所以这个配置在服务器端和客户端均可配置。

针对服务器端

  • 如果这个值是 0,那么要求客户端必须是修补了 CredSSP 的。
  • 如果这个值是 1,那么要求客户端可以是没修补 CredSSP 的。
  • 如果这个值是 2,那么要求客户端可以是没修补 CredSSP 的。(和 1 一样)

2018 年 5 月 8 日,微软将这个默认值修改为了 1。

针对客户端

  • 如果这个值是 0,那么要求服务端必须是修补了 CredSSP 的。(和 1 一样)
  • 如果这个值是 1,那么要求服务端必须是修补了 CredSSP 的。
  • 如果这个值是 2,那么要求服务端可以是没修补 CredSSP 的。

2018 年 5 月 8 日,微软将这个默认值修改为了 1。

也就是说:

  • 0:服务器端、客户端都必须是修补了 CredSSP 的。
  • 1:服务器端没要求客户端、但是客户端要求服务器端是修补了 CredSSP 的。 
  • 2:服务器端、客户端都可以是没修补 CredSSP 的。

怎么处理?

根据需求,修改这个值,比如现在还没准备好全部打补丁,那么就都修改为 2。

法一、在服务器端、客户端中运行 gpedit.msc 中:“计算机配置”->“管理模板”->“系统”->“凭据分配”,这里面有个“加密 Oracle 修正”,改之。

法二、如果是 Windows 10 家庭版,没有 gpedit.msc,那么就直接改注册表吧:

HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters

新建一个 32 位的、DWORD 类型的 AllowEncryptionOracle,然后为其设置相应的值。

注意:

  • 注册表中可能没有相应的项,那就新建之。
  • 还有我是 64 位系统,但是新建的 64 位值无效,我新建了 32 位值才生效。
  • 最后需要重启。
<<返回首页<<