在混合证书信任模型中配置和验证 PKI
本文介绍适用于以下应用的 Windows Hello 企业版功能或方案:
- 部署类型:
- 信任类型:证书
- 联接类型:,Microsoft Entra join , Microsoft Entra 混合联接
使用 证书信任 模型时,Windows Hello 企业版必须具有公钥基础结构 (PKI) 。 域控制器必须具有证书,该证书充当客户端 的信任根 。 证书可确保客户端不会与恶意域控制器通信。
混合证书信任部署向用户颁发登录证书,使他们能够使用 Windows Hello 企业版凭据向 Active Directory 进行身份验证。 此外,混合证书信任部署会向注册机构颁发证书,以在颁发用户身份验证证书时提供深层防御安全性。
部署企业证书颁发机构
本指南假定大多数企业已具有公钥基础结构。 Windows Hello 企业版依赖于运行 Windows Server Active Directory 证书服务 角色的企业 PKI。
如果没有现有的 PKI,请查看 证书颁发机构指南 以正确设计基础结构。 然后,请参阅 测试实验室指南:部署 AD CS Two-Tier PKI 层次结构 ,了解如何使用设计会话中的信息配置 PKI。
基于实验室的 PKI
以下说明可用于部署 适用于实验室环境的简单公钥基础结构。
在需要安装证书颁发机构 (CA) 的 Windows Server 上使用 企业管理员 等效凭据登录。
注意
切勿在生产环境中的域控制器上安装证书颁发机构。
- 打开提升的 Windows PowerShell 提示符
- 使用以下命令安装 Active Directory 证书服务角色。
Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools
- 使用以下命令使用基本证书颁发机构配置来配置 CA
Install-AdcsCertificationAuthority
配置企业 PKI
配置域控制器证书
客户端必须信任域控制器,启用信任的最佳方式是确保每个域控制器都具有 Kerberos 身份验证 证书。 在域控制器上安装证书可使密钥分发中心 (KDC) 向域的其他成员证明其身份。 证书为客户端提供域外部的信任根,即 企业证书颁发机构。
域控制器在发现企业 CA (已添加到 Active Directory 时,如果发布) ,则会自动请求 域控制器证书 。 基于 域控制器 和 域控制器身份验证 证书模板的证书不包括 KDC 身份验证 对象标识符 (OID) ,该标识符后来已添加到 Kerberos RFC。 因此,域控制器需要基于 Kerberos 身份验证 证书模板请求证书。
默认情况下,Active Directory CA 提供并发布 Kerberos 身份验证 证书模板。 模板中包含的加密配置基于较旧且性能较差的加密 API。 若要确保域控制器请求具有最佳可用加密的正确证书,请使用 Kerberos 身份验证 证书模板作为 基线 来创建更新的域控制器证书模板。
重要提示
颁发给域控制器的证书必须满足以下要求:
- 证书吊销列表 (CRL) 分发点扩展必须指向有效的 CRL,或指向指向联机证书状态协议 (OCSP) 响应者的机构信息访问 (AIA ) 扩展
- (可选)“证书 使用者 ”部分可以包含服务器对象的目录路径 (可分辨名称)
- 证书 密钥用法 部分必须包含 数字签名 和 密钥加密
- (可选)证书 “基本约束” 部分应包含:
[Subject Type=End Entity, Path Length Constraint=None]
- 证书 扩展密钥用法 部分必须包含客户端身份验证 (
1.3.6.1.5.5.7.3.2
) 、服务器身份验证 (1.3.6.1.5.5.7.3.1
) 和 KDC 身份验证 (1.3.6.1.5.2.3.5
) - 证书 使用者可选名称 部分必须包含域名系统 (DNS) 名称
- 证书模板必须具有具有 值 的扩展,该扩展
DomainController
编码为 BMPstring。 如果使用的是 Windows Server 企业证书颁发机构,则域控制器证书模板中已包含此扩展 - 域控制器证书必须安装在本地计算机的证书存储中
使用 域管理员 等效凭据登录到 CA 或管理工作站。
打开 证书颁发机构 管理控制台
右键单击“证书模板>管理”
在证书模板控制台中,右键单击详细信息窗格中的 Kerberos 身份验证模板,然后选择“复制模板”
使用下表配置模板:
选项卡名称 配置 兼容性 - 清除 “显示生成的更改 ”复选框
- 从“证书颁发机构”列表中选择“Windows Server 2016”
- 从“认证收件人”列表中选择“Windows 10/Windows Server 2016”
常规 - 指定 模板显示名称,例如 域控制器身份验证 (Kerberos)
- 将有效期设置为所需值
- 记下以后的模板名称,该名称应与模板显示名称减去空格相同
使用者名称 - 从此 Active Directory 信息中选择“生成”
- 从“使用者名称格式”列表中选择“无”
- 从“在备用主题中包含此信息”列表中选择“DNS 名称”
- 清除所有其他项
加密 - 将 “提供程序类别 ”设置为 “密钥存储提供程序”
- 将 算法名称 设置为 RSA
- 将 最小密钥大小 设置为 2048
- 将 “请求哈希 ”设置为 SHA256
选择 “确定” 以完成更改并创建新模板
关闭控制台
注意
Microsoft Entra 混合加入的设备不需要在域控制器证书中包含 KDC 身份验证 OID。 需要 OID 才能通过Microsoft已加入 Entra 的设备对本地资源启用 Windows Hello 企业版身份验证。
重要提示
若要Microsoft已加入 Entra 的设备向本地资源进行身份验证,请确保:
- 在设备的受信任根证书存储中安装根 CA 证书。 了解如何通过 Intune 部署受信任的证书配置文件
- 将证书吊销列表发布到可用于Microsoft Entra 联接设备的位置,例如基于 Web 的 URL
取代现有域控制器证书
域控制器可能具有现有的域控制器证书。 Active Directory 证书服务为域控制器提供称为 域控制器证书的默认证书模板。 Windows Server 的更高版本提供了名为 域控制器身份验证证书的新证书模板。 这些证书模板是在更新 Kerberos 规范之前提供的,该规范指出密钥分发中心 (KDC) 执行包含 KDC 身份验证 扩展所需的证书身份验证。
Kerberos 身份验证证书模板是为域控制器指定的最新证书模板,应是部署到所有域控制器的证书模板。
使用自动注册功能可以替换域控制器证书。 使用以下配置,使用 Kerberos 身份验证 证书模板将旧域控制器证书替换为新证书。
使用 企业管理员 等效凭据登录到 CA 或管理工作站。
- 打开 证书颁发机构 管理控制台
- 右键单击“证书模板>管理”
- 在 “证书模板控制台”中,右键单击“ 域控制器身份验证 (Kerberos) (或你在上一部分中创建的证书模板的名称,在详细信息窗格中) 模板,然后选择” 属性”
- 选择“ 取代的模板 ”选项卡。选择 “添加”
- 从“添加取代的模板”对话框中,选择“域控制器证书”模板,然后选择“确定>添加”
- 从 “添加取代的模板 ”对话框中,选择“ 域控制器身份验证” 证书模板,然后选择“ 确定”
- 在 “添加取代模板 ”对话框中,选择 “Kerberos 身份验证” 证书模板,然后选择“ 确定”
- 将以前为域控制器配置的任何其他企业证书模板添加到“ 取代的模板 ”选项卡
- 选择“ 确定” 并关闭 “证书模板” 控制台
证书模板配置为取代 被取代的模板 列表中提供的所有证书模板。
但是,在将模板发布到一个或多个证书颁发机构之前,证书模板和证书模板的取代不会处于活动状态。
注意
域控制器的证书必须链接到 NTAuth 存储中的根。 默认情况下,Active Directory 证书颁发机构的根证书将添加到 NTAuth 存储区。 如果使用非Microsoft CA,则默认情况下可能无法执行此操作。 如果域控制器证书未链接到 NTAuth 存储中的根,则用户身份验证将失败。 若要查看 NTAuth 存储区中的所有证书,请使用以下命令:
Certutil -viewstore -enterprise NTAuth
配置注册代理证书模板
证书注册机构 (CRA) 是验证证书请求的受信任颁发机构。 验证请求后,它会向证书颁发机构提交请求, (CA) 进行颁发。 CA 颁发证书,将其返回到 CRA,后者将证书返回给请求用户。 Windows Hello 企业版证书信任部署使用 AD FS 作为 CRA。
CRA 注册 注册代理证书。 CRA 验证证书请求后,会使用其注册代理证书对证书请求进行签名,并将其发送到 CA。 Windows Hello 企业版身份验证证书模板配置为仅向已使用注册代理证书签名的证书请求颁发证书。 仅当注册机构签署证书请求时,CA 才会颁发该模板的证书。
重要提示
根据环境中使用的 AD FS 服务帐户遵循以下过程。
为组托管服务帐户创建注册代理证书 (GMSA)
使用 域管理员 等效凭据登录到 CA 或管理工作站。
打开 证书颁发机构 管理控制台
右键单击“证书模板”,然后选择“管理”
在“证书模板控制台”中,右键单击“Exchange 注册代理 (脱机请求) 模板详细信息”窗格,然后选择“复制模板”
使用下表配置模板:
选项卡名称 配置 兼容性 - 清除 “显示生成的更改 ”复选框
- 从“证书颁发机构”列表中选择“Windows Server 2016”
- 从“认证收件人”列表中选择“Windows 10/Windows Server 2016”
常规 - 指定 模板显示名称,例如 WHFB 注册代理
- 将有效期设置为所需值
使用者名称 在请求中选择“供应”
注意: 组托管服务帐户 (GMSA) 不支持 “从此 Active Directory 生成”信息 选项,并将导致 AD FS 服务器无法注册注册代理证书。 必须在 请求中使用 Supply 配置证书模板,以确保 AD FS 服务器可以执行注册代理证书的自动注册和续订。加密 - 将 “提供程序类别 ”设置为 “密钥存储提供程序”
- 将 算法名称 设置为 RSA
- 将 最小密钥大小 设置为 2048
- 将 “请求哈希 ”设置为 SHA256
安全性 - 选择 “添加”
- 选择 “对象类型 ”,然后选中“ 服务帐户 ”复选框
- 选择 “确定”
- 在“输入要选择的对象名称”文本框中键入
adfssvc
,然后选择“确定” - 从“组或用户名称”列表中选择 adfssvc。 在 adfssvc 的权限 部分中:
- 在“adfssvc 的权限”部分中,选中“注册”权限的“允许”复选框
- 排除 adfssvc 用户,清除“组或用户名”列表中所有其他项目的“注册和自动注册权限”复选框
- 选择 “确定”
选择 “确定” 以完成更改并创建新模板
关闭控制台
为标准服务帐户创建注册代理证书
使用 域管理员 等效凭据登录到 CA 或管理工作站。
打开 证书颁发机构 管理控制台
右键单击“证书模板”,然后选择“管理”
在“证书模板控制台”中,右键单击“Exchange 注册代理 (脱机请求) 模板详细信息”窗格,然后选择“复制模板”
使用下表配置模板:
选项卡名称 配置 兼容性 - 清除 “显示生成的更改 ”复选框
- 从“证书颁发机构”列表中选择“Windows Server 2016”
- 从“证书收件人”列表中选择“Windows 10/Windows Server 2016”
常规 - 指定 模板显示名称,例如 WHFB 注册代理
- 将有效期设置为所需值
使用者名称 - 从此 Active Directory 信息中选择“生成”
- 从“使用者名称格式”列表中选择“完全可分辨名称”
- 选中“ 用户主体名称 (UPN) ”复选框 ,在备用使用者名称中包含此信息
加密 - 将 “提供程序类别 ”设置为 “密钥存储提供程序”
- 将 算法名称 设置为 RSA
- 将 最小密钥大小 设置为 2048
- 将 “请求哈希 ”设置为 SHA256
安全性 - 选择 “添加”
- 选择 “对象类型 ”,然后选中“ 服务帐户 ”复选框
- 选择 “确定”
- 在“输入要选择的对象名称”文本框中键入
adfssvc
,然后选择“确定” - 从“组或用户名称”列表中选择 adfssvc。 在 adfssvc 的权限 部分中:
- 在“adfssvc 的权限”部分中,选中“注册”权限的“允许”复选框
- 排除 adfssvc 用户,清除“组或用户名”列表中所有其他项目的“注册和自动注册权限”复选框
- 选择 “确定”
选择 “确定” 以完成更改并创建新模板
关闭控制台
配置 Windows Hello 企业版身份验证证书模板
在 Windows Hello 企业版预配期间,Windows 客户端从 AD FS 请求身份验证证书,AD FS 将代表用户请求身份验证证书。 该任务配置 Windows Hello 企业版身份验证证书模板。
使用 域管理员 等效凭据登录到 CA 或管理工作站。
打开 证书颁发机构 管理控制台
右键单击“证书模板”,然后选择“管理”
在“证书模板控制台”中,右键单击“智能卡登录”模板,然后选择“复制模板”
使用下表配置模板:
选项卡名称 配置 兼容性 - 清除 “显示生成的更改 ”复选框
- 从“证书颁发机构”列表中选择“Windows Server 2016”
- 从“认证收件人”列表中选择“Windows 10/Windows Server 2016”
常规 - 指定 模板显示名称,例如 WHFB 身份验证
- 将有效期设置为所需值
- 记下以后的模板名称,该名称应与模板显示名称减去空格相同
使用者名称 - 从此 Active Directory 信息中选择“生成”
- 从“使用者名称格式”列表中选择“完全可分辨名称”
- 选中“ 用户主体名称 (UPN) ”复选框 ,在备用使用者名称中包含此信息
加密 - 将 “提供程序类别 ”设置为 “密钥存储提供程序”
- 将 算法名称 设置为 RSA
- 将 最小密钥大小 设置为 2048
- 将 “请求哈希 ”设置为 SHA256
扩展 验证 应用程序策略 扩展包括 智能卡登录 颁发要求 - 选中“ 此授权签名数 ”复选框。 在文本框中键入 1
- 从签名中所需的策略类型中选择“应用程序策略”
- 在应用程序策略列表中选择证书请求代理
- 选择 “有效现有证书 ”选项
请求处理 选中“ 使用相同的密钥续订 ”复选框 安全性 - 选择 “添加”
- 面向包含要在 Windows Hello 企业版中注册的用户的 Active Directory 安全组。 例如,如果你有一个名为 “Window Hello 企业用户”的组,请在“ 输入对象名称以选择” 文本框中键入它,然后选择“ 确定”
- 从组或用户名称列表中选择 Windows Hello 企业版用户。 在 “Windows Hello 企业版用户的权限 ”部分中:
- 选中“注册”权限的“允许”复选框
- 排除上述组 (例如 Window Hello 企业用户) ,如果尚未清除复选框,请清除“组或用户名”部分中所有其他条目的注册和自动注册权限的允许复选框
- 选择 “确定”
选择 “确定” 以完成更改并创建新模板
关闭控制台
将模板标记为 Windows Hello 登录模板
使用 企业管理员 等效凭据登录到 CA 或管理工作站
打开提升的命令提示符端执行以下命令
certutil.exe -dsTemplate WHFBAuthentication msPKI-Private-Key-Flag +CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY
如果模板更改成功,命令的输出将包含模板参数的旧值和新值。 新值必须包含 CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY
参数。 示例:
CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=[yourdomain]:WHFBAuthentication
Old Value:
msPKI-Private-Key-Flag REG_DWORD = 5050080 (84213888)
CTPRIVATEKEY_FLAG_REQUIRE_SAME_KEY_RENEWAL -- 80 (128)
CTPRIVATEKEY_FLAG_ATTEST_NONE -- 0
TEMPLATE_SERVER_VER_WINBLUE<<CTPRIVATEKEY_FLAG_SERVERVERSION_SHIFT -- 50000 (327680)
TEMPLATE_CLIENT_VER_WINBLUE<<CTPRIVATEKEY_FLAG_CLIENTVERSION_SHIFT -- 5000000 (83886080)
New Value:
msPKI-Private-Key-Flag REG_DWORD = 5250080 (86311040)
CTPRIVATEKEY_FLAG_REQUIRE_SAME_KEY_RENEWAL -- 80 (128)
CTPRIVATEKEY_FLAG_ATTEST_NONE -- 0
TEMPLATE_SERVER_VER_WINBLUE<<CTPRIVATEKEY_FLAG_SERVERVERSION_SHIFT -- 50000 (327680)
CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY -- 200000 (2097152)
TEMPLATE_CLIENT_VER_WINBLUE<<CTPRIVATEKEY_FLAG_CLIENTVERSION_SHIFT -- 5000000 (83886080)
CertUtil: -dsTemplate command completed successfully."
注意
如果为 Windows Hello 企业版身份验证证书模板指定了其他名称,请在上述命令中将 替换为 WHFBAuthentication
证书模板的名称。 请务必注意,这里使用的是模板名称,不是模板显示名称。 你可以使用证书模板管理控制台 (certtmpl.msc) 在证书模板的常规选项卡上查看模板名称。
取消发布取代证书模板
证书颁发机构仅根据已发布的证书模板颁发证书。 出于安全原因,最好取消发布 CA 未配置为颁发的证书模板,包括角色安装中的预发布的模板和任何被取代的模板。
新创建的 域控制器身份验证 证书模板取代了以前的域控制器证书模板。 因此,需要从所有正在颁发的证书颁发机构中取消发布这些证书模板。
使用 企业管理员 等效凭据登录到 CA 或管理工作站。
- 打开 证书颁发机构 管理控制台
- 从导航窗格中展开父节点“证书模板”>
- 右键单击 域控制器 证书模板,然后选择 “删除”。 在“禁用证书模板”窗口中选择“是”
- 对 域控制器身份验证 和 Kerberos 身份验证 证书模板重复步骤 3
将证书模板发布到 CA
证书颁发机构只能为发布到它的证书模板颁发证书。 如果有多个 CA,并且希望多个 CA 基于证书模板颁发证书,则必须将证书模板发布到这些 CA。
使用 企业管理员 等效凭据登录到 CA 或管理工作站。
- 打开 证书颁发机构 管理控制台
- 从导航窗格中展开父节点
- 在导航窗格中选择 “证书模板 ”
- 右键单击证书模板节点。 选择要 颁发的“新建 > 证书模板”
- 在“启用证书模板”窗口中,选择在前面步骤>中创建的域控制器身份验证 (Kerberos) 、WHFB 注册代理和 WHFB 身份验证模板,选择“确定”
- 关闭控制台
重要提示
如果你计划部署 已加入 Entra Microsoft 的设备,并在使用 Windows Hello 企业版登录时需要单一登录 (SSO) 到本地资源,请按照更新 CA 以包括基于 http 的 CRL 分发点的过程进行操作。
配置证书并将其部署到域控制器
为域控制器配置自动证书注册
域控制器自动从域控制器证书模板请求 证书 。 但是,域控制器不知道证书模板上的更新证书模板或取代的配置。 若要让域控制器自动注册和续订证书,请为自动证书注册配置 GPO,并将其链接到 域控制器 OU。
- 打开 组策略管理控制台 (gpmc.msc)
- 展开域,然后在导航窗格中选择 “组策略对象 ”节点
- 右键单击组策略对象,然后选择新建
- 在名称框中键入 “域控制器自动证书注册 ”,然后选择“ 确定”
- 右键单击“域控制器自动证书注册组策略”对象,然后选择“编辑”
- 在导航窗格中,展开“计算机配置”下的“策略”
- 展开“Windows 设置”“>安全设置”“公钥策略”>
- 在详细信息窗格中,右键单击“ 证书服务客户端 - 自动注册 ”,然后选择“ 属性”
- 从“配置模型”列表中选择“已启用”
- 选中“ 续订过期证书、更新挂起的证书并删除吊销的证书 ”复选框
- 选中“ 更新使用证书模板的证书 ”复选框
- 选择 “确定”
- 关闭 组策略管理编辑器
部署域控制器自动证书注册 GPO
使用域 管理员 等效凭据登录到域控制器或管理工作站。
- 启动组策略管理控制台(gpmc.msc)
- 在导航窗格中,展开域,并使用 Active Directory 域名展开节点。 右键单击 “域控制器 ”组织单位,然后选择“ 链接现有 GPO...”
- 在 “选择 GPO ”对话框中,选择“ 域控制器自动证书注册 ”或之前创建的域控制器证书注册组策略对象的名称
- 选择 “确定”
验证配置
Windows Hello 企业版是一种分布式系统,表面上看起来比较复杂、不易使用。 成功部署的关键是在进入下一阶段之前验证工作阶段。
确认域控制器注册了正确的证书,而不是任何被取代的证书模板。 检查每个域控制器是否已完成证书自动注册。
使用事件日志
使用域 管理员 等效凭据登录到域控制器或管理工作站。
- 使用事件查看器导航到 “应用程序和服务>”Microsoft>Windows>CertificateServices-Lifecycles-System 事件日志
- 查找指示新证书注册 (自动注册) 的事件:
- 事件的详细信息包括颁发证书的证书模板
- 用于颁发证书的证书模板的名称应与事件中包含的证书模板名称匹配
- 事件中还包括证书的证书指纹和 EKU
- 正确 Windows Hello 企业版身份验证所需的 EKU 是 Kerberos 身份验证,以及证书模板提供的其他 EKU
由新的域控制器证书取代的证书会在事件日志中生成 存档事件 。 存档事件包含证书模板名称和由新证书取代的证书的指纹。
证书管理器
你可以使用证书管理器控制台验证域控制器是否具有正确注册的证书,该证书基于具有适当 EKU 的正确证书模板。 使用 certlm.msc 查看本地计算机证书存储中的证书。 展开个人存储,查看为该计算机注册的证书。 已存档的证书不会出现在证书管理器中。
Certutil.exe
可以使用 certutil.exe
命令在本地计算机中查看已注册的证书。 Certutil 显示本地计算机的已注册和已存档的证书。 在提升的命令提示符下,运行以下命令:
certutil.exe -q -store my
若要查看有关存储中每个证书的详细信息,并验证自动证书注册是否注册了正确的证书,请使用以下命令:
certutil.exe -q -v -store my
疑难解答
Windows 在引导期间和组策略更新时触发计算机的自动证书注册。 你可以在提升的命令提示符中使用 gpupdate.exe /force
刷新组策略。
或者,你也可以在提升的命令提示符中使用 certreq.exe -autoenroll -q
强制触发自动证书注册。
使用事件日志监视证书注册和存档。 查看配置,例如将证书模板发布到证书颁发机构,以及 允许 自动注册权限。
节评审和后续步骤
在转到下一部分之前,请确保完成以下步骤:
- 配置域控制器证书
- 取代现有域控制器证书
- 取消发布取代证书模板
- 配置注册代理证书模板
- 配置身份验证证书模板
- 将证书模板发布到 CA
- 将证书部署到域控制器
- 验证域控制器配置