本地证书信任部署指南

本文介绍适用于以下应用的 Windows Hello 企业版功能或方案:


要求

在开始部署之前,请查看 规划 Windows Hello 企业版部署一 文中所述的要求。

在开始之前,请确保满足以下要求:

部署步骤

满足先决条件后,部署 Windows Hello 企业版包括以下步骤:

配置和验证公钥基础结构

本文介绍适用于以下应用的 Windows Hello 企业版功能或方案:


使用密钥信任或证书信任模型时,Windows Hello 企业版必须具有公钥基础结构 (PKI) 。 域控制器必须具有证书,该证书充当客户端的信任根。 证书可确保客户端不会与恶意域控制器通信。 证书信任模型将证书颁发扩展到客户端计算机。 在 Windows Hello 企业版预配期间,用户收到登录证书。

部署企业证书颁发机构

本指南假定大多数企业已具有公钥基础结构。 Windows Hello 企业版依赖于运行 Windows Server Active Directory 证书服务 角色的企业 PKI。
如果没有现有的 PKI,请查看 证书颁发机构指南 以正确设计基础结构。 然后,请参阅 测试实验室指南:部署 AD CS Two-Tier PKI 层次结构 ,了解如何使用设计会话中的信息配置 PKI。

基于实验室的 PKI

以下说明可用于部署 适用于实验室环境的简单公钥基础结构。

在需要安装证书颁发机构 (CA) 的 Windows Server 上使用 企业管理员 等效凭据登录。

注意

切勿在生产环境中的域控制器上安装证书颁发机构。

  1. 打开提升的 Windows PowerShell 提示符
  2. 使用以下命令安装 Active Directory 证书服务角色。
    Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools
    
  3. 使用以下命令使用基本证书颁发机构配置来配置 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 或管理工作站。

  1. 打开 证书颁发机构 管理控制台

  2. 右键单击“证书模板>管理

  3. 证书模板控制台中,右键单击详细信息窗格中的 Kerberos 身份验证模板,然后选择“复制模板

  4. 使用下表配置模板:

    选项卡名称 配置
    兼容性
    • 清除 “显示生成的更改 ”复选框
    • “证书颁发机构”列表中选择“Windows Server 2016
    • “认证收件人”列表中选择“Windows 10/Windows Server 2016
    常规
    • 指定 模板显示名称,例如 域控制器身份验证 (Kerberos)
    • 将有效期设置为所需值
    • 记下以后的模板名称,该名称应与模板显示名称减去空格相同
    使用者名称
    • 从此 Active Directory 信息中选择“生成
    • “使用者名称格式”列表中选择“
    • 从“在备用主题中包含此信息”列表中选择“DNS 名称
    • 清除所有其他项
    加密
    • “提供程序类别 ”设置为 “密钥存储提供程序”
    • 算法名称 设置为 RSA
    • 最小密钥大小 设置为 2048
    • “请求哈希 ”设置为 SHA256
  5. 选择 “确定” 以完成更改并创建新模板

  6. 关闭控制台

取代现有域控制器证书

域控制器可能具有现有的域控制器证书。 Active Directory 证书服务为域控制器提供称为 域控制器证书的默认证书模板。 Windows Server 的更高版本提供了名为 域控制器身份验证证书的新证书模板。 这些证书模板是在更新 Kerberos 规范之前提供的,该规范指出密钥分发中心 (KDC) 执行包含 KDC 身份验证 扩展所需的证书身份验证。

Kerberos 身份验证证书模板是为域控制器指定的最新证书模板,应是部署到所有域控制器的证书模板。
使用自动注册功能可以替换域控制器证书。 使用以下配置,使用 Kerberos 身份验证 证书模板将旧域控制器证书替换为新证书。

使用 企业管理员 等效凭据登录到 CA 或管理工作站。

  1. 打开 证书颁发机构 管理控制台
  2. 右键单击“证书模板>管理
  3. “证书模板控制台”中,右键单击“ 域控制器身份验证 (Kerberos) (或你在上一部分中创建的证书模板的名称,在详细信息窗格中) 模板,然后选择” 属性”
  4. 选择“ 取代的模板 ”选项卡。选择 “添加”
  5. “添加取代的模板”对话框中,选择“域控制器证书”模板,然后选择“确定>添加
  6. “添加取代的模板 ”对话框中,选择“ 域控制器身份验证” 证书模板,然后选择“ 确定”
  7. “添加取代模板 ”对话框中,选择 “Kerberos 身份验证” 证书模板,然后选择“ 确定”
  8. 将以前为域控制器配置的任何其他企业证书模板添加到“ 取代的模板 ”选项卡
  9. 选择“ 确定” 并关闭 “证书模板” 控制台

证书模板配置为取代 被取代的模板 列表中提供的所有证书模板。
但是,在将模板发布到一个或多个证书颁发机构之前,证书模板和证书模板的取代不会处于活动状态。

注意

域控制器的证书必须链接到 NTAuth 存储中的根。 默认情况下,Active Directory 证书颁发机构的根证书将添加到 NTAuth 存储区。 如果使用非Microsoft CA,则默认情况下可能无法执行此操作。 如果域控制器证书未链接到 NTAuth 存储中的根,则用户身份验证将失败。 若要查看 NTAuth 存储区中的所有证书,请使用以下命令:

Certutil -viewstore -enterprise NTAuth

配置内部 Web 服务器证书模板

Windows 客户端通过 HTTPS 与 AD FS 通信。 为了满足此需求,必须将 服务器身份验证 证书颁发给 AD FS 场中的所有节点。 本地部署可以使用企业 PKI 颁发的 服务器身份验证 证书。 必须配置 服务器身份验证 证书模板,以便 AD FS 节点可以请求证书。

使用 域管理员 等效凭据登录到 CA 或管理工作站。

  1. 打开 证书颁发机构 管理控制台

  2. 右键单击“证书模板>管理

  3. “证书模板控制台”中,右键单击详细信息窗格中的“Web 服务器”模板,然后选择“复制模板

  4. 使用下表配置模板:

    选项卡名称 配置
    兼容性
    • 清除 “显示生成的更改 ”复选框
    • “证书颁发机构”列表中选择“Windows Server 2016
    • “认证收件人”列表中选择“Windows 10/Windows Server 2016
    常规
    • 指定 模板显示名称,例如 内部 Web 服务器
    • 将有效期设置为所需值
    • 记下以后的模板名称,该名称应与模板显示名称减去空格相同
    请求处理 选择“允许导出私钥
    使用者名称 在请求中选择“供应
    安全性 添加具有注册访问权限的域计算机
    加密
    • “提供程序类别 ”设置为 “密钥存储提供程序”
    • 算法名称 设置为 RSA
    • 最小密钥大小 设置为 2048
    • “请求哈希 ”设置为 SHA256
  5. 选择 “确定” 以完成更改并创建新模板

  6. 关闭控制台

配置 Windows Hello 企业版身份验证证书模板

在 Windows Hello 企业版预配期间,Windows 客户端从 AD FS 请求身份验证证书,AD FS 将代表用户请求身份验证证书。 该任务配置 Windows Hello 企业版身份验证证书模板。

使用 域管理员 等效凭据登录到 CA 或管理工作站。

  1. 打开 证书颁发机构 管理控制台

  2. 右键单击“证书模板”,然后选择“管理

  3. “证书模板控制台”中,右键单击“智能卡登录”模板,然后选择“复制模板

  4. 使用下表配置模板:

    选项卡名称 配置
    兼容性
    • 清除 “显示生成的更改 ”复选框
    • “证书颁发机构”列表中选择“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 企业用户) ,如果尚未清除复选框,请清除“组或用户名”部分中所有其他条目的注册自动注册权限的允许复选框
    • 选择 “确定”
  5. 选择 “确定” 以完成更改并创建新模板

  6. 关闭控制台

将模板标记为 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 或管理工作站。

  1. 打开 证书颁发机构 管理控制台
  2. 从导航窗格中展开父节点“证书模板”>
  3. 右键单击 域控制器 证书模板,然后选择 “删除”。 在“禁用证书模板”窗口中选择“
  4. 域控制器身份验证Kerberos 身份验证 证书模板重复步骤 3

将证书模板发布到 CA

证书颁发机构只能为发布到它的证书模板颁发证书。 如果有多个 CA,并且希望多个 CA 基于证书模板颁发证书,则必须将证书模板发布到这些 CA。

使用 企业管理员 等效凭据登录到 CA 或管理工作站。

  1. 打开 证书颁发机构 管理控制台
  2. 从导航窗格中展开父节点
  3. 在导航窗格中选择 “证书模板
  4. 右键单击证书模板节点。 选择要颁发的“新建>证书模板”
  5. “启用证书模板” 窗口中,选择在前面步骤中创建 的域控制器身份验证 (Kerberos) 内部 Web 服务器WHFB 身份验证 模板。 选择 “确定” ,将所选证书模板发布到证书颁发机构
  6. 如果将 域控制器身份验证 (Kerberos) 证书模板发布,请取消发布包含在取代模板列表中的证书模板
    • 若要取消发布证书模板,请右键单击要取消发布的证书模板,然后选择“ 删除”。 选择“ ”以确认操作
  7. 关闭控制台

配置证书并将其部署到域控制器

为域控制器配置自动证书注册

域控制器自动从域控制器证书模板请求 证书 。 但是,域控制器不知道证书模板上的更新证书模板或取代的配置。 若要让域控制器自动注册和续订证书,请为自动证书注册配置 GPO,并将其链接到 域控制器 OU。

  1. 打开 组策略管理控制台 (gpmc.msc)
  2. 展开域,然后在导航窗格中选择 “组策略对象 ”节点
  3. 右键单击组策略对象,然后选择新建
  4. 在名称框中键入 “域控制器自动证书注册 ”,然后选择“ 确定”
  5. 右键单击“域控制器自动证书注册组策略”对象,然后选择“编辑
  6. 在导航窗格中,展开“计算机配置”下的“策略
  7. 展开“Windows 设置”“>安全设置”“公钥策略”>
  8. 在详细信息窗格中,右键单击“ 证书服务客户端 - 自动注册 ”,然后选择“ 属性”
  9. “配置模型”列表中选择“已启用”
  10. 选中“ 续订过期证书、更新挂起的证书并删除吊销的证书 ”复选框
  11. 选中“ 更新使用证书模板的证书 ”复选框
  12. 选择 “确定”
  13. 关闭 组策略管理编辑器

部署域控制器自动证书注册 GPO

使用域 管理员 等效凭据登录到域控制器或管理工作站。

  1. 启动组策略管理控制台(gpmc.msc)
  2. 在导航窗格中,展开域,并使用 Active Directory 域名展开节点。 右键单击 “域控制器 ”组织单位,然后选择“ 链接现有 GPO...”
  3. “选择 GPO ”对话框中,选择“ 域控制器自动证书注册 ”或之前创建的域控制器证书注册组策略对象的名称
  4. 选择 “确定”

验证配置

Windows Hello 企业版是一种分布式系统,表面上看起来比较复杂、不易使用。 成功部署的关键是在进入下一阶段之前验证工作阶段。

确认域控制器注册了正确的证书,而不是任何被取代的证书模板。 检查每个域控制器是否已完成证书自动注册。

使用事件日志

使用域 管理员 等效凭据登录到域控制器或管理工作站。

  1. 使用事件查看器导航到 “应用程序和服务>”Microsoft>Windows>CertificateServices-Lifecycles-System 事件日志
  2. 查找指示新证书注册 (自动注册) 的事件:
    • 事件的详细信息包括颁发证书的证书模板
    • 用于颁发证书的证书模板的名称应与事件中包含的证书模板名称匹配
    • 事件中还包括证书的证书指纹和 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 强制触发自动证书注册。

使用事件日志监视证书注册和存档。 查看配置,例如将证书模板发布到证书颁发机构,以及 允许 自动注册权限。

节评审和后续步骤

在转到下一部分之前,请确保完成以下步骤:

  • 配置域控制器和 Web 服务器证书模板
  • 取代现有域控制器证书
  • 取消发布取代证书模板
  • 将证书模板发布到 CA
  • 将证书部署到域控制器
  • 验证域控制器配置