使用 Windows Hello 企业版 的远程桌面登录
可以使用Windows Hello 企业版通过远程桌面协议 (RDP) 的重定向智能卡功能登录到远程桌面会话。 这可以通过将证书部署到用户的设备实现,该证书随后在与另一个 Windows 设备建立 RDP 连接时用作提供的凭据。
本文介绍两种证书部署方法,其中身份验证证书部署到 Windows Hello 企业版 容器:
- 将 Microsoft Intune 与 SCEP 或 PKCS 连接器配合使用
- 使用 Active Directory 证书服务 (AD CS) 注册策略
重要提示
如果使用 Microsoft Intune 部署证书,并且已将用户帐户控制配置为在安全桌面上提示输入凭据,则无法使用运行方式功能。 在这种情况下,尝试使用提升的权限执行应用程序并选择Windows Hello 企业版凭据时,将收到错误消息:用户名或密码不正确。
提示
请考虑使用远程 Credential Guard 而不是 Windows Hello 企业版 进行 RDP 登录。 远程 Credential Guard 使用 Kerberos 身份验证为 RDP 会话提供单一登录 (SSO) ,并且不需要部署证书。 有关详细信息,请参阅 远程 Credential Guard。
工作原理
Windows 使用名为密钥 存储提供程序 的软件组件生成和存储加密密钥, (KSP) :
- 基于软件的密钥是使用Microsoft软件密钥存储提供程序创建和存储的
- 智能卡密钥是使用Microsoft智能卡密钥存储提供程序创建的并存储的
- Windows Hello 企业版创建和保护的密钥是使用 Microsoft Passport 密钥存储提供程序创建和存储的
智能卡上的证书首先使用Microsoft智能卡 KSP 创建非对称密钥对。 Windows 根据颁发证书颁发机构的企业的密钥对请求证书,这会返回存储在用户个人证书存储中的证书。 私钥保留在智能卡并且公钥随证书一起存储。 证书 (和密钥) 上的元数据存储用于创建密钥的密钥存储提供程序, (记住证书包含公钥) 。
相同的概念也适用于Windows Hello 企业版,只是密钥是使用 Microsoft Passport KSP 创建的。 用户的私钥仍受设备安全模块 (TPM) 和用户的手势 (PIN/生物识别) 的保护。 证书 API 隐藏复杂性。 当应用程序使用证书时,证书 API 使用保存的密钥存储提供程序查找密钥。 密钥存储提供程序指示证书 API,他们用来查找与证书关联的私钥的提供程序。 这是 Windows 知道你拥有智能卡证书而不插入智能卡的方式,并提示你插入智能卡。
Windows Hello 企业版模拟应用程序兼容性的智能卡,Microsoft Passport KSP 会提示用户输入其生物识别手势或 PIN。
注意
使用生物识别的远程桌面不适用于 双重注册 或用户提供替代凭据的方案。
要求
下面是使用 Windows Hello 企业版 启用 RDP 登录的要求列表:
- 基于 AD CS 或第三方的 PKI 基础结构
- 部署到客户端的Windows Hello 企业版
- 如果计划支持已加入Microsoft Entra设备,则域控制器必须具有证书,该证书充当客户端的信任根。 证书可确保客户端不与恶意域控制器通信
如果计划使用 Microsoft Intune 部署证书,则更多要求如下:
创建证书模板
创建证书模板的过程适用于使用 本地 Active Directory 证书服务 (AD CS) 基础结构的方案。
必须先创建证书模板,然后基于该模板的证书部署到 Windows Hello 企业版 容器。
证书模板配置会有所不同,具体取决于是使用 Microsoft Intune 还是使用 Active Directory 注册策略部署证书。 选择最适合需要的选项。
(CA) 登录到发证证书颁发机构并打开服务器管理器
选择 “工具 > 证书颁发机构”。 “证书颁发机构Microsoft管理控制台” (MMC) 打开
在 MMC 中,展开 CA 名称,然后右键单击“证书模板>管理”
此时会打开“证书模板”控制台。 所有证书模板都显示在详细信息窗格中
右键单击“智能卡登录”模板,然后选择“复制模板”
使用下表配置模板:
选项卡名称 配置 兼容性 - 清除“显示生成的更改检查”框
- 从证书颁发机构列表中选择Windows Server 2012或Windows Server 2012 R2
- 从“认证收件人”列表中选择Windows Server 2012或Windows Server 2012 R2
常规 - 指定 模板显示名称,例如 WHfB 证书身份验证
- 将有效期设置为所需值
- 记下以后的模板名称,该名称应与本示例中的模板显示名称减去空格 (WHfBCertificateAuthentication 相同)
扩展 验证 应用程序策略 扩展包括 智能卡登录。 使用者名称 在请求中选择“提供”。 请求处理 - 将“用途”设置为 “签名”和“智能卡登录 ”,并在系统提示更改证书用途时选择“ 是 ”
- 选择“使用相同的密钥检查续订”框
- 选择“ 在注册期间提示用户”
注意: 如果使用 PKCS 配置文件部署证书,请选择选项 “允许导出私钥”加密 - 将“提供程序类别”设置为 “密钥存储提供程序”
- 将算法名称设置为 RSA
- 将最小密钥大小设置为 2048
- 选择“请求必须使用以下提供程序之一”
- 选择 Microsoft软件密钥存储提供程序
- 将“请求哈希”设置为 SHA256
安全性 添加用于 SCEP 或 PKCS 注册 访问的安全主体 选择“ 确定” 以完成更改并创建新模板。 新模板现在应显示在证书模板列表中
关闭证书模板控制台
颁发证书模板
- 在证书颁发机构控制台中,右键单击“证书模板”,选择“新建>要颁发的证书模板”
- 从模板列表中,选择之前 (WHFB 证书身份验证) 创建的模板,然后选择“ 确定”。 模板复制到所有服务器并在此列表中可用可能需要一些时间
- 模板复制后,在 MMC 中,右键单击“证书颁发机构”列表中,选择“ 所有任务 > 停止服务”。 再次右键单击 CA 的名称,选择“所有任务启动服务”>
部署证书
部署证书的过程因使用 Microsoft Intune 还是 Active Directory 注册策略而异。 选择最适合需要的选项。
本部分介绍如何在 Intune 中配置 SCEP 策略。 可以遵循类似的步骤来配置 PKCS 策略。
选择“设备>配置文件”>“创建配置文件”
选择“平台>Windows 10及更高版本”和“配置文件类型>模板 > SCEP 证书”
选择“创建”
在“基本信息”面板中,提供“名称”和“说明下一步>”(可选)
在 “配置设置 ”面板中,使用下表配置策略:
设置 配置 证书类型 用户 使用者名称格式 CN={{UserPrincipalName}}
注意: 如果用户 UPN 后缀与 Active Directory 域 FQDN 不匹配,请改用CN={{OnPrem_Distinguished_Name}}
。使用者可选名称 在下拉列表中,选择“ 用户主体名称 (UPN) ,值为 {{UserPrincipalName}}
证书有效期 配置你选择的值 密钥存储提供程序 (KSP) 注册到Windows Hello 企业版,否则失败 密钥用法 数字签名 密钥大小 (位) 2048 对于哈希算法 SHA-2 根证书 选择“ +根证书 ”,然后选择之前为根 CA 证书创建的受信任证书配置文件 扩展密钥用法 - 名称:智能卡登录
-
对象标识符:
1.3.6.1.4.1.311.20.2.2
- 预定义值:未配置
- 名称:客户端身份验证
-
对象标识符:
1.3.6.1.5.5.7.3.2
- 预定义值:客户端身份验证
续订阈值 (%) 配置你选择的值 SCEP 服务器 URL 提供在部署 SCEP 基础结构期间配置的公共终结点 () 选择“ 下一步”
在“分配”面板中,将策略分配给包含要配置的设备或用户作为成员的安全组,然后选择“下一步”
在“适用性规则”面板中,根据需要配置颁发限制,然后选择“下一步”
在“查看 + 创建”面板中,查看策略配置并选择“创建”
有关如何配置 SCEP 策略的详细信息,请参阅在 Intune 中配置 SCEP 证书配置文件。 若要配置 PKCS 策略,请参阅配置 PKCS 证书并将其用于Intune。
注意
如果通过 Intune 部署证书并通过组策略配置Windows Hello 企业版,则设备将无法获取证书,并在日志中DeviceManagement-Enterprise-Diagnostic-Provider
记录错误代码0x82ab0011
。
若要避免此错误,请通过Intune而不是组策略配置Windows Hello 企业版。
使用非Microsoft证书颁发机构
如果使用非Microsoft PKI,则发布到本地 Active Directory的证书模板可能不可用。 有关将 Intune/SCEP 与非Microsoft PKI 部署集成的指南,请参阅在 Microsoft Intune 中使用非Microsoft证书颁发机构 (CA) 与 SCEP。
作为 SCEP 的替代方法,或者如果以前涵盖的解决方案在环境中均不起作用,则可以手动生成证书签名请求 (CSR) ,以便提交到 PKI。 若要帮助实现此方法,可以使用 Generate-CertificateRequest PowerShell commandlet。
commandlet Generate-CertificateRequest
为预先存在的Windows Hello 企业版密钥生成.inf
文件。
.inf
可用于使用 certreq.exe
手动生成证书请求。 该 commandlet 还会生成一个 .req
文件,该文件可提交到 PKI 以获取证书。
验证是否已部署证书
若要验证证书是否已正确部署到 Windows Hello 企业版 容器,请使用以下命令:
certutil -store -user my
输出列出了存储在用户存储中的密钥和证书。 如果从 CA 颁发的证书部署到 Windows Hello 企业版 容器,则输出将显示值为 的Microsoft Passport Key Storage Provider
证书Provider
。
例如:
C:\Users\amanda.brady>certutil -store -user my
my "Personal"
================ Certificate 0 ================
Serial Number: 110000001f4c4eccc46fc8f93a00000000001f
Issuer: CN=Contoso - Issuing CA, DC=CONTOSO, DC=COM
NotBefore: 12/8/2023 6:16 AM
NotAfter: 12/7/2024 6:16 AM
Subject: CN=amanda.brady@contoso.com
Non-root Certificate
Template: 1.3.6.1.4.1.311.21.8.2835349.12167323.7094945.1118853.678601.83.11484210.8005739
Cert Hash(sha1): 63c6ce5fc512933179d3c0a5e94ecba98092f93d
Key Container = S-1-12-1-../../login.windows.net/../amanda.brady@contoso.com
Provider = Microsoft Passport Key Storage Provider
Private key is NOT exportable
Encryption test passed
用户体验
用户获取证书后,可以通过打开远程桌面连接 (mstsc.exe
) ,将 RDP 连接到与用户的 Active Directory 帐户相同的 Active Directory 林中的任何 Windows 设备。 连接到远程主机时,系统会提示他们使用Windows Hello 企业版解锁证书的私钥。
已加入Microsoft Entra设备
用户可以使用任何可用的Windows Hello解锁手势(包括生物识别)进行身份验证。
Microsoft Entra混合联接的设备
凭据提示将Windows Hello凭据提供程序标识为安全设备凭据。 用户必须使用 PIN 凭据提供程序才能解锁。
下面是一个简短的视频,展示了使用指纹作为解锁因素的已加入Microsoft Entra设备的用户体验:
注意
用户必须有权使用远程桌面协议连接到远程服务器,例如,作为远程主机上的远程桌面用户本地组的成员。
兼容性
虽然用户欣赏生物识别的便利性,并且管理员重视安全性,但你可能会遇到应用程序和Windows Hello 企业版证书的兼容性问题。 在这种情况下,可以部署策略设置,以还原需要该策略设置的用户的先前行为。
有关详细信息,请参阅将 Windows Hello 企业版 证书用作智能卡证书
已知问题
尝试通过 RDP 使用Hello证书执行 TLS 1.3 客户端身份验证时,存在一个已知问题。 身份验证失败并出现错误: ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED
。 Microsoft正在调查可能的解决方案。