![RDP 客户端认为智能卡不适用于身份验证](https://linux22.com/image/1400394/RDP%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AE%A4%E4%B8%BA%E6%99%BA%E8%83%BD%E5%8D%A1%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
我有:
- 一台 Windows 7 客户端计算机。我不是该计算机的管理员。
- Windows 2008R2 服务器,我想在其上使用远程桌面打开会话。
- A远程桌面网关,也运行Windows 2008R2。
- 一张智能卡。
服务器配置为允许智能卡登录。网关也需要智能卡身份验证。所有客户端和服务器都知道并信任所有相关的 CA 证书,没有证书过期,所有 CRL 都已发布到应发布的位置。
至关重要的是,智能卡上的证书有一个扩展密钥用法扩展 (EKU),不包含“智能卡登录”OID。但它具有“客户端身份验证”功能。服务器和网关已配置为接受证书:这是一项名为“允许没有扩展密钥使用证书属性的证书”的策略设置,如所述那里。
问题
客户端使用 .rdp 文件,其中指定了服务器名称和网关名称。由于网关是网关,而不是实际的远程桌面服务器,因此它没有“登录屏幕”可显示。相反,智能卡身份验证依赖于客户端(mstsc.exe
Windows 中的标准 RD 客户端)处理的 GUI,让用户选择他的智能卡并输入他的 PIN 码。弹出窗口应如下所示:
(抱歉弹出的是法语版本;我手头没有英语版本的 Windows 7。)
不幸的是,弹出窗口不是这样的。相反,我看到的是这个:
分析
正如所描述的这里,客户端应用程序 (mstsc.exe) 将让操作系统 (Windows 7)“枚举”智能卡。操作系统将查找包含满足某些条件的证书的智能卡,特别是在任何此类证书中找到的任何 EKU 扩展都包含“智能卡登录”OID。这是在实际尝试与网关通信之前完成的,更不用说最终目标服务器了。网关和服务器对我的证书非常满意;它们已经这样配置了。但是,客户端操作系统强制执行根据其自身配置,Windows 7 拒绝让我使用智能卡,因为其本地策略会拒绝打开本地会话(即使我根本没有尝试打开本地会话)。
这曾经与 Windows XP 客户端一起工作,因为 Windows XP 的“智能卡选择弹出窗口”不强制执行这些检查(Windows XP 以更严格的方式检查 EKU,因为它不能容忍缺少 EKU 扩展,但它只在实际尝试打开本地会话时强制执行这些检查,而不是在为远程会话选择证书时)。
我无法使用的解决方案
“正常”解决方案是将本地客户端 (Windows 7) 配置为与服务器相同的“允许没有扩展密钥使用证书属性的证书”。这样,智能卡选择弹出窗口现在接受显示智能卡,一切正常。我在另一个系统上进行了测试。但是,我无法在目标系统上执行此操作,因为更改本地策略需要管理员权限,而我没有。同样,对于属于域的客户端,可以从 AD 服务器上的 GPO 推送设置,但由于缺乏适当的权限,我再次被禁止。
有人可能会说,此策略设置实际上允许使用其 EKU 中没有正确 OID 的证书登录客户端计算机,这可以视为不良的副作用。我正尝试在远程服务器;我不应该改变在本地客户。
较旧的 mstsc.exe 版本(来自 Windows XP)显然可以在不需要任何客户端身份验证的情况下连接到服务器;在这种情况下,远程服务器将显示其登录屏幕(“大蓝绿色屏幕”)并自行处理智能卡枚举。由于服务器具有适当的策略,因此这将有效。但是,由于两个原因,我不能使用这样的解决方案:
- Windows 7 中的 mstsc.exe 显然坚持使用其自己的弹出窗口进行身份验证。
- 有一个网关,与最终目标服务器相反,它没有显示“登录屏幕”。当使用需要客户端智能卡身份验证的网关时,客户端智能卡选择必须由客户端软件进行管理。
问题
所以我的问题是:有办法解决这个问题吗?理想情况下,mstsc.exe 中的某种配置设置(命令行开关或 .rdp 文件中的子句)可以指示 mstsc.exe不是使用操作系统智能卡选择弹出窗口,而是自行进行枚举,没有试图强制执行有关 EKU 的任何内容。我没有发现此类功能的踪迹,但没有证据并不代表不存在。我可能只是错过了它。
答案1
为连接创建一个 .rdp 文件,在 .rdp 文件中设置 enablecredsspsupport:i:0,并确保已启用本地资源映射的智能卡选项(默认为开启,所以除非您明确更改设置,否则应该已经是这种情况。)
请参阅以下条目以了解更多详细信息: http://blogs.msdn.com/b/rds/archive/2007/01/22/vista-remote-desktop-connection-authentication-faq.aspx#_When_to_use
我不是相当确信这是否可以解决您的问题,因为中间有一个网关,但坦率地说,我想不出任何其他可能的解决方案。