使用 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 部署证书,则更多要求如下:

  • 确保拥有支持 SCEPPKCS 部署的基础结构
  • 使用受信任的根证书策略将根 CA 证书和任何其他中间证书颁发机构证书部署到已加入Microsoft Entra设备

创建证书模板

创建证书模板的过程适用于使用 本地 Active Directory 证书服务 (AD CS) 基础结构的方案。
必须先创建证书模板,然后基于该模板的证书部署到 Windows Hello 企业版 容器。

证书模板配置会有所不同,具体取决于是使用 Microsoft Intune 还是使用 Active Directory 注册策略部署证书。 选择最适合需要的选项。

  1. (CA) 登录到发证证书颁发机构并打开服务器管理器

  2. 选择 “工具 > 证书颁发机构”。 “证书颁发机构Microsoft管理控制台” (MMC) 打开

  3. 在 MMC 中,展开 CA 名称,然后右键单击“证书模板>管理

  4. 此时会打开“证书模板”控制台。 所有证书模板都显示在详细信息窗格中

  5. 右键单击“智能卡登录”模板,然后选择“复制模板

  6. 使用下表配置模板:

    选项卡名称 配置
    兼容性
    • 清除“显示生成的更改检查”框
    • 证书颁发机构列表中选择Windows Server 2012或Windows Server 2012 R2
    • “认证收件人”列表中选择Windows Server 2012或Windows Server 2012 R2
    常规
    • 指定 模板显示名称,例如 WHfB 证书身份验证
    • 将有效期设置为所需值
    • 记下以后的模板名称,该名称应与本示例中的模板显示名称减去空格 (WHfBCertificateAuthentication 相同)
    扩展 验证 应用程序策略 扩展包括 智能卡登录
    使用者名称 在请求中选择“提供”。
    请求处理
    • 将“用途”设置为 “签名”和“智能卡登录 ”,并在系统提示更改证书用途时选择“
    • 选择“使用相同的密钥检查续订”框
    • 选择“ 在注册期间提示用户”

    注意: 如果使用 PKCS 配置文件部署证书,请选择选项 “允许导出私钥”
    加密
    • 将“提供程序类别”设置为 “密钥存储提供程序”
    • 将算法名称设置为 RSA
    • 将最小密钥大小设置为 2048
    • 选择“请求必须使用以下提供程序之一
    • 选择 Microsoft软件密钥存储提供程序
    • 将“请求哈希”设置为 SHA256
    安全性 添加用于 SCEP 或 PKCS 注册 访问的安全主体
  7. 选择“ 确定” 以完成更改并创建新模板。 新模板现在应显示在证书模板列表中

  8. 关闭证书模板控制台

颁发证书模板

  1. 在证书颁发机构控制台中,右键单击“证书模板”,选择“新建>要颁发的证书模板
  2. 从模板列表中,选择之前 (WHFB 证书身份验证) 创建的模板,然后选择“ 确定”。 模板复制到所有服务器并在此列表中可用可能需要一些时间
  3. 模板复制后,在 MMC 中,右键单击“证书颁发机构”列表中,选择“ 所有任务 > 停止服务”。 再次右键单击 CA 的名称,选择“所有任务启动服务”>

部署证书

部署证书的过程因使用 Microsoft Intune 还是 Active Directory 注册策略而异。 选择最适合需要的选项。

本部分介绍如何在 Intune 中配置 SCEP 策略。 可以遵循类似的步骤来配置 PKCS 策略。

  1. 转到Microsoft Intune管理中心

  2. 选择“设备>配置文件”>“创建配置文件

  3. 选择“平台>Windows 10及更高版本”和“配置文件类型>模板 > SCEP 证书

  4. 选择“创建

  5. “基本信息”面板中,提供“名称”和“说明下一步>”(可选)

  6. “配置设置 ”面板中,使用下表配置策略:

    设置 配置
    证书类型 用户
    使用者名称格式 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 基础结构期间配置的公共终结点 ()
  7. 选择“ 下一步”

  8. “分配”面板中,将策略分配给包含要配置的设备或用户作为成员的安全组,然后选择“下一步

  9. “适用性规则”面板中,根据需要配置颁发限制,然后选择“下一步

  10. “查看 + 创建”面板中,查看策略配置并选择“创建

有关如何配置 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 凭据提供程序才能解锁。

使用生物识别的远程桌面连接身份验证提示的屏幕截图。

使用 PIN 的远程桌面连接身份验证提示的屏幕截图。

下面是一个简短的视频,展示了使用指纹作为解锁因素的已加入Microsoft Entra设备的用户体验:

注意

用户必须有权使用远程桌面协议连接到远程服务器,例如,作为远程主机上的远程桌面用户本地组的成员。

兼容性

虽然用户欣赏生物识别的便利性,并且管理员重视安全性,但你可能会遇到应用程序和Windows Hello 企业版证书的兼容性问题。 在这种情况下,可以部署策略设置,以还原需要该策略设置的用户的先前行为。

有关详细信息,请参阅将 Windows Hello 企业版 证书用作智能卡证书

已知问题

尝试通过 RDP 使用Hello证书执行 TLS 1.3 客户端身份验证时,存在一个已知问题。 身份验证失败并出现错误: ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED。 Microsoft正在调查可能的解决方案。