网络解锁

网络解锁是操作系统卷的 BitLocker 密钥保护程序 。 网络解锁在连接到有线企业网络时,通过在系统重新启动时自动解锁操作系统卷,可以更轻松地管理域环境中启用了 BitLocker 的桌面和服务器。 网络解锁要求客户端硬件在其 UEFI 固件中实现 DHCP 驱动程序。 如果没有网络解锁,受 TPM+PIN 保护程序保护的操作系统卷要求在设备重新启动或从休眠状态恢复时输入 PIN, (例如 LAN 唤醒) 。 重启后需要 PIN 可能会使企业难以将软件修补程序推出到无人参与的桌面和远程管理的服务器。

网络解锁允许具有 TPM+PIN 且 满足硬件要求的已启用 BitLocker 的系统启动到 Windows,而无需用户干预。 网络解锁的工作方式与启动时的工作方式类似 TPM+StartupKey 。 但是,网络解锁功能不需要从 USB 媒体读取 StartupKey,而是需要从 TPM 中存储的密钥和发送到服务器、解密并在安全会话中返回到客户端的加密网络密钥组成密钥。

系统要求

网络解锁必须满足必需的硬件和软件要求,然后该功能才能自动解锁已加入域的系统。 这些要求包括:

  • 任何受支持的操作系统(具有可用作网络解锁客户端的 UEFI DHCP 驱动程序)
  • 具有 TPM 芯片和至少一个 TPM 保护器的网络解锁客户端
  • 在任何受支持的服务器操作系统上运行 Windows 部署服务 (WDS) 角色的服务器
  • 在任何受支持的服务器操作系统上安装的 BitLocker 网络解锁可选功能
  • 独立于 WDS 服务器的 DHCP 服务器
  • 正确配置公钥/私钥配对
  • 已配置网络解锁组策略设置
  • 在客户端设备的 UEFI 固件中启用的网络堆栈

重要提示

若要在 UEFI 中支持 DHCP,基于 UEFI 的系统应处于本机模式,并且不应 (CSM) 启用兼容性支持模块。

若要使网络解锁可靠工作,必须将设备上的第一个网络适配器(通常是板载适配器)配置为支持 DHCP。 第一个网络适配器必须用于网络解锁。 当设备具有多个适配器,并且某些适配器在没有 DHCP 的情况下进行配置(例如用于熄灯管理协议)时,此配置尤其值得注意。 此配置是必需的,因为网络解锁在遇到 DHCP 端口失败的适配器时停止枚举适配器,原因为 。 因此,如果第一个枚举的适配器不支持 DHCP、未插入网络,或者由于任何原因未能报告 DHCP 端口的可用性,则网络解锁将失败。

网络解锁服务器组件作为使用 服务器管理器 或 Windows PowerShell cmdlet 的 Windows 功能安装在受支持的 Windows Server 版本上。 功能名称位于 BitLocker Network Unlock 服务器管理器 和 BitLocker-NetworkUnlock PowerShell 中。

网络解锁要求 Windows 部署服务 (WDS) 将利用该功能的环境中。 不需要配置 WDS 安装。 但是,WDS 服务必须在服务器上运行。

网络密钥与 AES 256 会话密钥一起存储在系统驱动器上,并使用解锁服务器证书的 2048 位 RSA 公钥进行加密。 网络密钥在运行 WDS 的受支持版本的 Windows Server 上的提供程序的帮助下解密,并使用其相应的会话密钥返回加密。

网络解锁序列

当 Windows 启动管理器检测到存在网络解锁保护程序时,解锁序列将从客户端开始。 它使用 UEFI 中的 DHCP 驱动程序获取 IPv4 的 IP 地址,然后广播特定于供应商的 DHCP 请求,该请求包含网络密钥和用于答复的会话密钥,所有这些请求均由服务器的网络解锁证书加密。 支持的 WDS 服务器上的网络解锁提供程序识别特定于供应商的请求,使用 RSA 私钥对其进行解密,并通过自己的特定于供应商的 DHCP 回复返回使用会话密钥加密的网络密钥。

在服务器端,WDS 服务器角色具有可选的插件组件,如 PXE 提供程序,用于处理传入的网络解锁请求。 还可以为提供程序配置子网限制,这将要求客户端在网络解锁请求中提供的 IP 地址属于允许的子网,才能将网络密钥释放给客户端。 在网络解锁提供程序不可用的情况下,BitLocker 会故障转移到下一个可用的保护程序来解锁驱动器。 在典型的配置中,将显示标准 TPM+PIN 解锁屏幕来解锁驱动器。

启用网络解锁的服务器端配置还需要以 X.509 证书的形式预配 2048 位 RSA 公钥/私钥对,并将公钥证书分发给客户端。 此证书是用于加密中间网络密钥的公钥 (这是解锁驱动器所需的两个机密之一:另一个机密存储在 TPM) 中,必须通过组策略对其进行管理和部署。

网络解锁过程遵循以下阶段:

  1. Windows 启动管理器在 BitLocker 配置中检测网络解锁保护程序
  2. 客户端计算机使用 UEFI 中的 DHCP 驱动程序获取有效的 IPv4 IP 地址
  3. 客户端计算机广播供应商特定的 DHCP 请求,该请求包含网络密钥 (256 位中间密钥) 以及用于答复的 AES-256 会话密钥。 使用 WDS 服务器中的网络解锁证书的 2048 位 RSA 公钥加密网络密钥
  4. WDS 服务器上的网络解锁提供程序识别特定于供应商的请求
  5. 提供程序使用 WDS 服务器的 BitLocker 网络解锁证书 RSA 私钥解密请求
  6. WDS 提供程序通过使用自己的特定于供应商的 DHCP 回复向客户端计算机返回使用会话密钥加密的网络密钥。 此密钥是中间键
  7. 返回的中间键与另一个本地 256 位中间键组合使用。 此密钥只能由 TPM 解密
  8. 此组合密钥用于创建解锁卷的 AES-256 密钥
  9. Windows 继续启动顺序

网络解锁序列图。

配置网络解锁

以下步骤允许管理员在 Active Directory 域中配置网络解锁。

安装 WDS 服务器角色

BitLocker 网络解锁功能会安装 WDS 角色(如果尚未安装)。 使用 服务器管理器PowerShell,可以在安装 BitLocker 网络解锁之前单独安装 WDS。 若要使用 服务器管理器 安装角色,请在 服务器管理器 中选择 Windows 部署服务角色。

若要使用 PowerShell 安装角色,请使用以下命令:

Install-WindowsFeature WDS-Deployment

必须配置 WDS 服务器,以便它可以与 DHCP (以及 AD DS) 和客户端计算机进行通信。 可以使用 WDS 管理工具来配置 WDS 服务器, wdsmgmt.msc该工具将启动 Windows 部署服务配置向导。

确认 WDS 服务正在运行

若要确认 WDS 服务正在运行,请使用服务管理控制台或 PowerShell。 若要确认服务是否在服务管理控制台中运行,请使用 services.msc 打开控制台,检查 Windows 部署服务服务的状态。

若要使用 PowerShell 确认服务正在运行,请使用以下命令:

Get-Service WDSServer

安装网络解锁功能

若要安装网络解锁功能,请使用 服务器管理器 或 PowerShell。 若要使用 服务器管理器 安装该功能,请在 服务器管理器 控制台中选择 BitLocker 网络解锁功能。

若要使用 PowerShell 安装该功能,请使用以下命令:

Install-WindowsFeature BitLocker-NetworkUnlock

为网络解锁创建证书模板

正确配置的 Active Directory 证书颁发机构可以使用此证书模板创建和颁发网络解锁证书。

  1. 打开“证书模板”管理单元 (certtmpl.msc)

  2. 找到“用户模板”,右键单击模板名称,然后选择“复制模板

  3. 在“兼容性”选项卡上,将“证书颁发机构”和“证书收件人”字段分别更改为“Windows Server 2016”和“Windows 10”。 确保选中“ 显示生成的更改 ”对话框

  4. 选择模板的“ 常规 ”选项卡。 模板显示名称和模板名称应标识模板将用于网络解锁。 清除“在 Active Directory 中发布证书”选项的“检查”框

  5. 选择“请求处理”选项卡。从“用途”下拉菜单中选择“加密”。 确保选中 “允许导出私钥 ”选项

  6. 选择“ 加密 ”选项卡。将 “最小密钥大小 ”设置为 2048。 支持 RSA 的任何 Microsoft 加密提供程序都可以用于此模板,但为简单起见和向前兼容性,建议使用 Microsoft 软件密钥存储提供程序

  7. 选择“ 请求必须使用以下提供程序之一 ”选项,并清除除所选加密提供程序之外的所有选项,例如 Microsoft 软件密钥存储提供程序

  8. 选择“ 使用者名称 ”选项卡。 在请求中选择“提供”。 如果显示证书模板弹出对话框,请选择“确定”

  9. 选择“ 颁发要求 ”选项卡。选择 CA 证书管理器审批有效现有证书 选项

  10. 选择“ 扩展 ”选项卡。选择 “应用程序策略 ”,然后选择 “编辑...”

  11. “编辑应用程序策略扩展选项”对话框中,选择“客户端身份验证”、“加密文件系统”和“保护Email”,然后选择“删除

  12. “编辑应用程序策略扩展”对话框中,选择“添加

  13. 在“ 添加应用程序策略 ”对话框中,选择“ 新建”。 在“ 新建应用程序策略 ”对话框中,在提供的空间中输入以下信息,然后选择“ 确定” 以创建 BitLocker 网络解锁应用程序策略:

    • 名称:BitLocker 网络解锁
    • 对象标识符:1.3.6.1.4.1.311.67.1.1
  14. 选择新创建的 BitLocker 网络解锁 应用程序策略,然后选择 “确定”

  15. 在“ 扩展 ”选项卡仍处于打开状态的情况下,选择 “编辑密钥用法扩展 ”对话框。 选择“ 仅允许密钥加密 (密钥交换) 选项。 选择“ 使此扩展至关重要 ”选项

  16. 选择“ 安全性 ”选项卡。确认已向 域管理员 组授予 “注册” 权限

  17. 选择 “确定” 完成模板配置

若要将网络解锁模板添加到证书颁发机构,请打开证书颁发机构管理单元 (certsrv.msc) 。 右键单击“ 证书模板”,然后选择“ 新建”和“要颁发的证书模板”。 选择之前创建的 BitLocker 网络解锁证书。

将网络解锁模板添加到证书颁发机构后,此证书可用于配置 BitLocker 网络解锁。

创建网络解锁证书

网络解锁可以使用现有公钥基础结构 (PKI) 导入的证书。 也可以使用自签名证书。

若要从现有证书颁发机构注册证书,请执行以下操作:

  1. 在 WDS 服务器上,使用 打开证书管理器 certmgr.msc
  2. “证书 - 当前用户”下,右键单击“个人
  3. 选择“所有任务请求新证书”>
  4. 证书注册向导打开时,选择“下一步
  5. 选择 Active Directory 注册策略
  6. 选择为域控制器上的网络解锁创建的证书模板。 然后选择“注册
  7. 当系统提示输入详细信息时,请选择“ 使用者名称” 并提供友好名称值。 友好名称应包含证书的域或组织单位的信息。例如: Contoso 域的 BitLocker 网络解锁证书
  8. 创建证书。 确保证书显示在 “个人” 文件夹中
  9. 导出网络解锁的公钥证书:
    1. .cer通过右键单击以前创建的证书,选择“所有任务”,然后选择“导出”来创建文件
    2. 选择“否,不导出私钥
    3. 选择 DER 编码的二进制 X.509 并完成将证书导出到文件
    4. 为文件命名,例如 BitLocker-NetworkUnlock.cer
  10. 使用用于网络解锁的私钥导出公钥
    1. .pfx通过右键单击以前创建的证书,选择“所有任务”,然后选择“导出”来创建文件
    2. 选择“是,导出私钥
    3. 完成创建 .pfx 文件的步骤

若要创建自签名证书,请使用 New-SelfSignedCertificate Windows PowerShell 中的 cmdlet 或使用 certreq.exe。 例如:

PowerShell

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "CN=BitLocker Network Unlock certificate" -Provider "Microsoft Software Key Storage Provider" -KeyUsage KeyEncipherment -KeyUsageProperty Decrypt,Sign -KeyLength 2048 -HashAlgorithm sha512 -TextExtension @("1.3.6.1.4.1.311.21.10={text}OID=1.3.6.1.4.1.311.67.1.1","2.5.29.37={text}1.3.6.1.4.1.311.67.1.1")

certreq.exe

  1. 创建扩展名为的 .inf 文本文件,例如:

    notepad.exe BitLocker-NetworkUnlock.inf
    
  2. 将以下内容添加到之前创建的文件中:

    [NewRequest]
    Subject="CN=BitLocker Network Unlock certificate"
    ProviderType=0
    MachineKeySet=True
    Exportable=true
    RequestType=Cert
    KeyUsage="CERT_KEY_ENCIPHERMENT_KEY_USAGE"
    KeyUsageProperty="NCRYPT_ALLOW_DECRYPT_FLAG | NCRYPT_ALLOW_SIGNING_FLAG"
    KeyLength=2048
    SMIME=FALSE
    HashAlgorithm=sha512
    [Extensions]
    1.3.6.1.4.1.311.21.10 = "{text}"
    _continue_ = "OID=1.3.6.1.4.1.311.67.1.1"
    2.5.29.37 = "{text}"
    _continue_ = "1.3.6.1.4.1.311.67.1.1"
    
  3. 打开提升的命令提示符, certreq.exe 并使用该工具创建新证书。 使用以下命令,指定之前创建的文件的完整路径以及文件名:

    certreq.exe -new BitLocker-NetworkUnlock.inf BitLocker-NetworkUnlock.cer
    
  4. 通过确认 .cer 文件存在,验证上一命令是否正确创建了证书

  5. 通过运行启动 证书 - 本地计算机 控制台 certlm.msc

  6. .pfx按照以下步骤创建文件证书 - 本地计算机控制台:

    1. 导航到 “证书 - 本地计算机>个人>证书”
    2. 右键单击以前导入的证书,选择“所有任务”,然后选择“导出
    3. 按照向导操作以创建 .pfx 文件

将私钥和证书部署到 WDS 服务器

创建证书和密钥后,将它们部署到基础结构以正确解锁系统。 若要部署证书,请执行以下操作:

  1. 在 WDS 服务器上,运行“ 证书 - 本地计算机” 控制台 certlm.msc
  2. 右键单击“证书 (本地计算机) ”下的“BitLocker 驱动器加密网络解锁”项,选择“所有任务”,然后选择“导入
  3. 在“ 要导入的文件 ”对话框中,选择 .pfx 之前创建的文件
  4. 输入用于创建 .pfx 并完成向导的密码

配置网络解锁的组策略设置

将证书和密钥部署到 WDS 服务器进行网络解锁后,最后一步是使用组策略设置将公钥证书部署到将使用网络解锁密钥进行解锁的所需计算机。 可以在使用本地组策略 编辑器或 Microsoft 管理控制台的计算机配置>管理模板>Windows 组件>BitLocker 驱动器加密下找到 BitLocker 的组策略设置。

以下步骤介绍如何启用配置网络解锁所需的组策略设置。

  1. 打开组策略管理控制台 (gpmc.msc)
  2. 启用“ 启动时需要其他身份验证”策略,然后选择“ 需要使用 TPM 启动 PIN ”或 “允许使用 TPM 启动 PIN”
  3. 在所有已加入域的计算机上,使用 TPM+PIN 保护程序打开 BitLocker

以下步骤介绍如何部署所需的组策略设置:

  1. .cer 为网络解锁创建的文件复制到域控制器

  2. 在域控制器上,打开组策略管理控制台 (gpmc.msc)

  3. 创建新的组策略对象或修改现有对象以启用“在启动时允许网络解锁”设置

  4. 将公共证书部署到客户端:

    1. 在组策略管理控制台,导航到以下位置:

      计算机配置>政策>Windows 设置>安全设置>公钥策略>BitLocker 驱动器加密网络解锁证书

    2. 右键单击文件夹,然后选择“添加网络解锁证书

    3. 按照向导步骤操作并 .cer 导入之前复制的文件

    注意

    一次只能提供一个网络解锁证书。 如果需要新证书,请在部署新证书之前删除当前证书。 网络解锁证书位于客户端计算机的 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\SystemCertificates\FVE_NKP 注册表项下。

  5. 部署组策略后重新启动客户端

    注意

    只有在重新启动后,才会添加 基于网络 (证书) 保护程序,并且启用了策略,并且FVE_NKP存储中存在有效的证书。

WDS 服务器上的子网策略配置文件 (可选)

默认情况下,服务器将解锁具有正确网络解锁证书和有效网络解锁保护程序且可通过 DHCP 有线访问已启用网络解锁的 WDS 服务器的所有客户端。 可以在 WDS 服务器上创建子网策略配置文件,以限制网络解锁客户端可用于解锁的子网 () 。

名为 的 bde-network-unlock.ini配置文件必须与网络解锁提供程序 DLL () %windir%\System32\Nkpprov.dll 位于同一目录中,并且它同时适用于 IPv6 和 IPv4 DHCP 实现。 如果子网配置策略损坏,提供程序将失败并停止响应请求。

子网策略配置文件必须使用 节 [SUBNETS] 来标识特定的子网。 然后,可以使用命名子网在证书子节中指定限制。 子网定义为采用通用 INI 格式的简单名称值对,其中每个子网都有自己的行,等号左侧有名称,等号右侧标识为无类 Inter-Domain 路由 (CIDR) 地址或范围。 子网名称不允许使用关键字 ENABLED

[SUBNETS]
SUBNET1=10.185.250.0/24 ; a comment about this subrange could be here, after the semicolon
SUBNET2=10.185.252.200/28 
SUBNET3= 2001:4898:a:2::/64 ; an IPv6 subnet
SUBNET4=2001:4898:a:3::/64; in production, the admin would likely give more useful names, like BUILDING9-EXCEPT-RECEP.

[SUBNETS] 部分之后,每个网络解锁证书都有一个部分,由证书指纹标识,格式不带任何空格,用于定义可从该证书解锁的子网客户端。

注意

指定证书指纹时,请勿包含任何空格。 如果指纹中包含空格,子网配置将失败,因为指纹无法识别为有效。

通过表示允许的子网列表,在每个证书节中定义子网限制。 如果证书部分列出了任何子网,则只允许这些子网用于该证书。 如果证书部分未列出任何子网,则允许该证书使用所有子网。 如果证书在子网策略配置文件中没有节,则使用该证书解锁不会应用子网限制。 若要对每个证书应用限制,服务器上每个网络解锁证书都必须有一个证书部分,并为每个证书部分设置一个显式允许列表。

子网列表是通过将 节中的子网 [SUBNETS] 名称放在证书部分标题下方的行来创建的。 然后,服务器将仅使用此证书在子网上解锁客户端, () 在列表中指定。 为了进行故障排除,可以通过用预置的分号注释掉子网,从而快速排除子网,而无需将其从节中删除。

[2158a767e1c14e88e27a4c0aee111d2de2eafe60]
;Comments could be added here to indicate when the cert was issued, which Group Policy should get it, and so on.
;This list shows this cert is allowed to unlock clients only on the SUBNET1 and SUBNET3 subnets. In this example, SUBNET2 is commented out.
SUBNET1
;SUBNET2
SUBNET3

若要完全禁止使用证书,请在其子网列表中添加一 DISABLED 行。

关闭网络解锁

若要关闭解锁服务器,可以从 WDS 服务器取消注册 PXE 提供程序或完全卸载 PXE 提供程序。 但是,若要阻止客户端创建网络解锁保护程序,应禁用 “启动时允许网络解锁” 组策略设置。 当此策略设置更新为在客户端计算机上 禁用 时,将删除计算机上的任何网络解锁密钥保护程序。 或者,可以在域控制器上删除 BitLocker 网络解锁证书策略,以便为整个域完成相同的任务。

注意

删除 WDS 服务器上包含网络解锁证书和密钥的FVE_NKP证书存储也会有效地禁用服务器响应该证书的解锁请求的能力。 但是,这被视为一种错误条件,不是关闭网络解锁服务器的受支持或推荐方法。

更新网络解锁证书

若要更新网络解锁使用的证书,管理员需要导入或生成服务器的新证书,然后更新域控制器上的网络解锁证书组策略设置。

注意

未收到组策略设置的服务器在启动时需要 PIN。 在这种情况下,请找出服务器不接收 GPO 来更新证书的原因。

排查网络解锁问题

排查网络解锁问题首先验证环境。 很多时候,小型配置问题可能是失败的根本原因。 要验证的项目包括:

  • 验证客户端硬件是否基于 UEFI 且固件版本为 2.3.1,并且 UEFI 固件是否处于本机模式,且未启用兼容性支持模块 (CSM) BIOS 模式。 可以通过检查固件是否未启用选项(例如“旧模式”或“兼容模式”)或固件是否未处于类似于 BIOS 的模式来完成验证

  • 安装并启动所有必需的角色和服务

  • 公共和专用证书已发布,并且位于适当的证书容器中。 在启用了本地计算机的证书管理单元的情况下,可以在 WDS 服务器上的 Microsoft 管理控制台 (MMC.exe) 验证是否存在网络解锁证书。 可以通过检查客户端计算机上的注册表项 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\SystemCertificates\FVE_NKP 来验证客户端证书

  • 已启用网络解锁的组策略并将其链接到相应的域

  • 验证组策略是否已正确到达客户端。 可以使用 或 RSOP.msc 实用工具验证GPRESULT.exe组策略

  • 验证应用策略后客户端是否已重新启动

  • 验证客户端上是否列出了 基于网络 (证书) 保护程序。 可以使用 manage-bde 或 Windows PowerShell cmdlet 对保护程序进行验证。 例如,以下命令将列出当前在本地计算机的 C: 驱动器上配置的密钥保护程序:

    manage-bde.exe -protectors -get C:
    

    注意

    使用 的 manage-bde.exe 输出和 WDS 调试日志来确定网络解锁是否使用了正确的证书指纹。

收集以下文件以排查 BitLocker 网络解锁问题。

  • Windows 事件日志。 具体而言,获取 BitLocker 事件日志和 Microsoft-Windows-Deployment-Services-Diagnostics-Debug 日志

    默认情况下,WDS 服务器角色的调试日志记录处于关闭状态。 若要检索 WDS 调试日志,首先需要启用 WDS 调试日志。 使用以下两种方法之一打开 WDS 调试日志记录。

    • 启动提升的命令提示符,然后运行以下命令:

      wevtutil.exe sl Microsoft-Windows-Deployment-Services-Diagnostics/Debug /e:true
      
    • 在 WDS 服务器上打开事件查看器

      1. 在左窗格中,导航到“应用程序和服务日志”>“Microsoft>Windows>部署-服务-诊断>调试
      2. 在右窗格中,选择“启用日志
  • DHCP 子网配置文件 (是否存在)

  • 卷上的 BitLocker 状态的输出。 使用 manage-bde.exe -status将此输出收集到文本文件中。 或者在 Windows PowerShell 中使用Get-BitLockerVolume

  • 托管 WDS 角色的服务器上的网络监视器捕获,按客户端 IP 地址筛选