联合身份验证服务私钥的保护机制

介绍性说明

证书存储在 FAS 服务器的注册表中。关联的私钥通过 FAS 服务器的网络服务帐户存储,并且默认标记为不可导出。

私钥分为两种类型:

  • 与注册机构 (RA) 证书相关的私钥,该私钥来源于 Citrix_RegistrationAuthority 证书模板。
  • 与用户证书关联的私钥,来自 Citrix_SmartcardLogon 证书模板。

There are actually two RA certificates: Citrix_RegistrationAuthority_ManualAuthorization (valid for 24 hours by default) and Citrix_RegistrationAuthority (valid for two years by default).

在 FAS 管理控制台的“初始设置”步骤 3 中,当管理员单击“授权”时,FAS 服务器会生成一个密钥对,并向证书颁发机构 (CA) 发送一个针对 Citrix_RegistrationAuthority_ManualAuthorization 证书的证书签名请求 (CSR)。这是一个临时证书,默认有效期为 24 小时。CA 不会自动颁发此证书;其颁发必须由管理员在 CA 上手动授权。一旦证书颁发给 FAS 服务器,FAS 将使用 Citrix_RegistrationAuthority_ManualAuthorization 证书自动获取 Citrix_RegistrationAuthority 证书(默认有效期为两年)。FAS 服务器在获取 Citrix_RegistrationAuthority 证书后,会立即删除 Citrix_RegistrationAuthority_ManualAuthorization 的证书和密钥。

与 RA 证书关联的私钥特别敏感,因为 RA 证书策略允许拥有该私钥的任何人针对模板中配置的用户集发出证书请求。因此,控制此密钥的任何人都可以作为该用户集中的任何用户连接到环境。

您可以配置 FAS 服务器,以适合您组织安全要求的方式保护私钥,方法是使用以下选项之一:

  • 针对 RA 证书和用户证书的私钥,使用 Microsoft 增强型 RSA 和 AES 加密服务提供程序或 Microsoft 软件密钥存储提供程序。
  • 针对 RA 证书的私钥,使用带可信平台模块 (TPM) 芯片的 Microsoft 平台密钥存储提供程序;针对用户证书的私钥,使用 Microsoft 增强型 RSA 和 AES 加密服务提供程序或 Microsoft 软件密钥存储提供程序。
  • 针对 RA 证书和用户证书的私钥,使用硬件安全模块 (HSM) 供应商的加密服务或密钥存储提供程序以及 HSM 设备。

私钥配置的各项设置

Configure FAS to use one of the three options. Use a text editor to edit the Citrix.Authentication.FederatedAuthenticationService.exe.config file. The default location of the file is in the Program Files\Citrix\Federated Authentication Service folder on the FAS server.

本地化图像

FAS 仅在服务启动时读取配置文件。如果更改了任何值,则必须重新启动 FAS 才能使新设置生效。

Set the relevant values in the Citrix.Authentication.FederatedAuthenticationService.exe.config file as follows:

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderLegacyCsp (switch between CAPI and CNG APIs)

注释
使用 CAPI 应用程序编程接口
否(默认) 使用 CNG 应用程序编程接口

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderName (name of the provider to use)

注释
微软增强型 RSA 和 AES 加密服务提供程序 默认 CAPI 提供程序
Microsoft 软件密钥存储提供程序 默认 CNG 提供程序
Microsoft 平台密钥存储提供程序 默认 TPM 提供程序。请注意,不建议将 TPM 用于用户密钥。仅将 TPM 用于 RA 密钥。如果您计划在虚拟化环境中运行 FAS 服务器,请咨询您的 TPM 和虚拟机管理程序供应商,了解是否支持虚拟化。
HSM_供应商 CSP/密钥存储提供程序 由 HSM 供应商提供。该值因供应商而异。如果您计划在虚拟化环境中运行 FAS 服务器,请咨询您的 HSM 供应商,了解是否支持虚拟化。

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderType (Required only in case of CAPI API)

注释
24 Default. Refers to Microsoft KeyContainerPermissionAccessEntry.ProviderType Property PROV_RSA_AES 24. Should always be 24 unless you are using an HSM with CAPI and the HSM vendor specifies otherwise.

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyProtection (When FAS needs to perform a private key operation, it uses the value specified here) Controls the “exportable” flag of private keys. Allows the use of TPM key storage, if supported by the hardware.

注释
无保护 私钥可以导出。
生成不可导出密钥 默认。私钥无法导出。
生成受 TPM 保护的密钥 私钥将使用 TPM 进行管理。私钥通过您在 ProviderName 中指定的提供程序名称进行存储(例如,Microsoft 平台密钥存储提供程序)

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyLength (Specify size of private key in bits)

注释
2048 默认。也可以使用 1024 或 4096。

配置文件设置以图形方式表示如下(安装默认值以红色显示):

本地化图像

配置场景的各种示例

示例 1

此示例涵盖使用 Microsoft 软件密钥存储提供程序存储的 RA 证书私钥和用户证书私钥

这是系统安装完成后的默认配置。因此,不需要再进行任何额外的私钥配置。

示例 2

此示例显示了通过 Microsoft 平台密钥存储提供程序存储在 FAS 服务器主板硬件 TPM 中的 RA 证书私钥,以及使用 Microsoft 软件密钥存储提供程序存储的用户证书私钥。

此方案假定 FAS 服务器主板上的 TPM 已根据 TPM 制造商的文档在 BIOS 中启用,然后在 Windows 中初始化;请参阅 https://docs.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-vista/cc749022(v=ws.10)?redirectedfrom=MSDN

使用 PowerShell 进行配置 (推荐)

可以使用 PowerShell 离线请求 RA 证书。建议不希望其 CA 通过在线 CSR 颁发 RA 证书的组织使用此方法。无法使用 FAS 管理控制台创建离线 RA CSR。

步骤 1: 在使用管理控制台进行 FAS 配置的初始设置期间,仅完成前两个步骤:“部署证书模板”和“设置证书颁发机构。”

本地化图像

步骤 2: 在您的证书颁发机构服务器上,添加“证书模板”MMC 管理单元。右键单击 Citrix_RegistrationAuthority_ManualAuthorization 模板,然后选择复制模板

选择常规选项卡。更改名称和有效期。在此示例中,名称为 Offline_RA,有效期为 2 年:

本地化图像

步骤 3: 在您的 CA 服务器上,添加“CA MMC”管理单元。右键单击证书模板。选择新建,然后单击要颁发的证书模板。选择您刚刚创建的模板。

步骤 4: 在联合身份验证服务服务器上加载以下 PowerShell cmdlet 命令:

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1

步骤 5: 在 FAS 服务器的 TPM 中生成 RSA 密钥对,并通过在 FAS 服务器上输入以下 PowerShell cmdlet 来创建 CSR。注意: 某些 TPM 限制密钥长度。默认密钥长度为 2048 位。请务必指定您的硬件支持的密钥长度。

New-FasAuthorizationCertificateRequest -UseTPM $true -address <FQDN of FAS Server>

例如:

New-FasAuthorizationCertificateRequest -UseTPM $true -address fashsm.auth.net

将显示以下内容:

本地化图像

注意:

  • Id GUID(在此示例中为“5ac3d8bd-b484-4ebe-abf8-4b2cfd62ca39”)在后续步骤中是必需的。
  • 可将此 PowerShell cmdlet 视为一次性“覆盖”,用于生成 RA 证书的私钥。
  • 运行此 cmdlet 时,将检查 FAS 服务启动时从配置文件中读取的值,以确定要使用的密钥长度(默认值为 2048)。
  • 由于在此手动 PowerShell 启动的 RA 证书私钥操作中,-UseTPM 设置为 $true,因此系统将忽略文件中与使用 TPM 所需设置不匹配的值。
  • 运行此 cmdlet 不会更改配置文件中的任何设置。
  • 在后续自动 FAS 启动的用户证书私钥操作期间,将使用 FAS 服务启动时从文件中读取的值。
  • 也可以在 FAS 服务器颁发用户证书时,将配置文件中的 KeyProtection 值设置为 GenerateTPMProtectedKey,以生成受 TPM 保护的用户证书私钥。

要验证是否使用 TPM 生成了密钥对,请在生成密钥对时,查看 FAS 服务器上 Windows 事件查看器中的应用程序日志。

本地化图像

注意 “[TPM: 真]”

接着是:

本地化图像

注意 “提供程序: [CNG] Microsoft 平台加密提供程序”

步骤 6: 将证书请求部分复制到文本编辑器中,并将其保存到磁盘作为文本文件。

本地化图像

步骤 7: 通过在 FAS 服务器上的 PowerShell 中键入以下内容,将 CSR 提交到您的 CA:

certreq -submit -attrib “certificatetemplate:<certificate template from step 2>” <certificate request file from step 6>

例如:

certreq -submit -attrib “certificatetemplate:Offline_RA” C:\Users\Administrator.AUTH\Desktop\usmcertreq.txt

显示以下内容:

本地化图像

此时可能会出现“Certification Authority List”窗口。此示例中的 CA 已启用 http(顶部)和 DCOM(底部)注册。如果可用,请选择 DCOM 选项:

本地化图像

指定证书颁发机构后,PowerShell 会显示请求标识符:

本地化图像

步骤 8: 在 CA 服务器上,在 CA MMC 管理单元中,单击“挂起的请求”。记下请求 ID。然后右键单击该请求并选择“颁发”。

步骤 9: 选择“颁发的证书”节点。找到刚刚颁发的证书(请求 ID 应匹配)。双击打开证书。选择“详细信息”选项卡。单击“复制到文件”。证书导出向导启动。单击“下一步”。为文件格式选择以下选项:

本地化图像

格式必须是“加密消息语法标准 – PKCS #7 证书 (.P7B)”,并且必须选中“如果可能,包括证书路径中的所有证书”。

步骤 10: 将导出的证书文件复制到 FAS 服务器上。

步骤 11: 通过在 FAS 服务器上输入以下 PowerShell cmdlet,将 RA 证书导入 FAS 服务器注册表:

本地化图像

例如:

本地化图像

显示以下内容:

本地化图像

步骤 12: 关闭 FAS 管理控制台,然后重新启动它。

本地化图像

请注意,“授权此服务”步骤已变为绿色,并且现在显示“取消授权此服务”。下面的条目指示“授权者:脱机 CSR”

步骤 13: 在 FAS 管理控制台中选择用户角色选项卡,并编辑 FAS 主文章中描述的设置。

注意:通过管理控制台取消授权 FAS 将删除用户规则。

使用 FAS 管理控制台

FAS 管理控制台无法执行离线 CSR,因此不建议使用它,除非您的组织允许对 RA 证书进行在线 CSR。

执行 FAS 初始设置步骤时,在部署证书模板和设置 CA 之后,但在授权服务之前(配置序列中的步骤 3):

步骤 1: 如下更改以下行以编辑配置文件:

本地化图像

文件现在应如下所示:

本地化图像

某些 TPM 限制密钥长度。默认密钥长度为 2048 位。请务必指定您的硬件支持的密钥长度。

步骤 2: 授权服务。

步骤 3: 从 CA 服务器手动颁发待处理的证书请求。获取 RA 证书后,管理控制台设置序列中的步骤 3 将变为绿色。此时,RA 证书的私钥将在 TPM 中生成。证书默认有效期为 2 年。

步骤 4: 将配置文件改回以下内容:

本地化图像

注意:尽管 FAS 可以生成具有 TPM 保护密钥的用户证书,但 TPM 硬件对于大型部署可能太慢。

步骤 5: 重启 Citrix Federated Authentication Service。这将强制服务重新读取配置文件并反映更改的值。随后的自动私钥操作将影响用户证书密钥;这些操作不会将私钥存储在 TPM 中,而是使用 Microsoft 软件密钥存储提供程序。

步骤 6: 在 FAS 管理控制台中选择“用户角色”选项卡,并按照 FAS 主文章中的说明编辑设置。

注意: 通过管理控制台取消授权 FAS 将删除用户规则。

示例 3

此示例涵盖存储在 HSM 中的 RA 证书私钥和用户证书私钥。此示例假定已配置 HSM。您的 HSM 将具有提供程序名称,例如“HSM_Vendor’s Key Storage Provider”。

如果您计划在虚拟化环境中运行 FAS 服务器,请咨询您的 HSM 供应商以了解管理程序支持情况。

步骤 1. 在使用管理控制台进行 FAS 配置的初始设置期间,仅完成前两个步骤:“部署证书模板”和“设置证书颁发机构”。

本地化图像

步骤 2: 查阅您的 HSM 供应商文档,以确定您的 HSM 的 ProviderName 值应为何。如果您的 HSM 使用 CAPI,则文档中可能会将提供程序称为加密服务提供程序 (CSP)。如果您的 HSM 使用 CNG,则提供程序可能会被称为密钥存储提供程序 (KSP)。

步骤 3: 如下编辑配置文件:

本地化图像

文件现在应如下所示:

本地化图像

此方案假定您的 HSM 使用 CNG,因此 ProviderLegacyCsp 值设置为 false。如果您的 HSM 使用 CAPI,则 ProviderLegacyCsp 值应设置为 true。请查阅您的 HSM 供应商文档,以确定您的 HSM 使用 CAPI 还是 CNG。另请查阅您的 HSM 供应商文档,了解非对称 RSA 密钥生成支持的密钥长度。在此示例中,密钥长度设置为默认值 2048 位。请确保您指定的密钥长度受您的硬件支持。

步骤 4: 重新启动 Citrix 联邦身份验证服务以从配置文件中读取值。

步骤 5: 在 HSM 中生成 RSA 密钥对,并通过单击 FAS 管理控制台的“初始设置”选项卡中的“授权”来创建 CSR。

步骤 6: 要验证密钥对是否在 HSM 中生成,请检查 Windows 事件日志中的应用程序条目:

本地化图像

注意: [提供程序: [CNG] HSM_Vendor’s 密钥存储提供程序]

步骤 7: 在 CA 服务器上,在 CA MMC 中,选择“挂起的请求”节点:

本地化图像

右键单击该请求并选择“颁发”。

请注意,“授权此服务”步骤已变为绿色,现在显示“取消授权此服务”。下面的条目指示“授权者: [<CA 名称>]”

本地化图像

步骤 8: 在 FAS 管理控制台中选择“用户角色”选项卡,并按照 FAS 主文章中的说明编辑设置。

注意: 通过管理控制台取消授权 FAS 将删除用户规则。

FAS 证书存储

FAS 不使用 FAS 服务器上的 Microsoft 证书存储来存储其证书。它使用注册表。

注意: 当使用 HSM 存储私钥时,HSM 容器通过 GUID 标识。HSM 中私钥的 GUID 与注册表中相应证书的 GUID 匹配。

要确定注册机构证书的全局唯一标识符,请在 FAS 服务器上输入以下 PowerShell 命令:

Add-pssnapin Citrix.a*

Get-FasAuthorizationCertificate –address <FAS server FQDN>

例如:

Get-FasAuthorizationCertificate –address cg-fas-2.auth.net

本地化图像

要获取用户证书列表,请输入:

Get-FasUserCertificate –address <FAS server FQDN>

例如:

Get-FasUserCertificate –address cg-fas-2.auth.net

本地化图像

更多相关信息

联合身份验证服务私钥的保护机制