证书颁发机构配置

Last published : Oct 24, 2026
This article describes the advanced configuration of Federated Authentication Service (FAS) to integrate with certificate authority (CA) servers. Most of these configurations are not supported by the FAS administration console. The instructions use PowerShell APIs provided by FAS. You must have a basic knowledge of PowerShell before running any instructions in this article.

在 FAS 中设置多个 CA 服务器以供使用

您可以在创建或编辑规则时,使用 FAS 管理控制台配置 FAS 以使用多个 CA:
您选择的所有 CA 都必须发布 Citrix_SmartcardLogon 证书模板(或您在规则中选择的任何模板)。
如果您要使用的某个 CA 未发布所需的模板,请为该 CA 执行设置证书颁发机构步骤。
注意:
您不必为每个 CA 执行授权此服务步骤,因为在此步骤中配置的授权证书可用于您的任何 CA。

预期行为更改

在使用多个 CA 服务器配置 FAS 服务器后,用户证书生成将在所有已配置的 CA 服务器之间进行分发。此外,如果其中一个已配置的 CA 服务器发生故障,FAS 服务器将切换到另一个可用的 CA 服务器。

为 TCP 访问配置 Microsoft 证书颁发机构

FAS 使用 DCOM 访问 Microsoft CA。DCOM 使用端口 135 发现服务正在侦听的端口。默认情况下,侦听端口是动态分配的。 这可能会在实施防火墙安全时导致复杂性。因此,Microsoft 提供了一种配置静态端口的方法。 要在 Microsoft CA 上配置静态端口,请选择“开始”>“运行”> dcomcnfg.exe 以打开“DCOM 配置”面板。展开“计算机”>“我的电脑”>“DCOM 配置”以显示 CertSrv 请求节点。然后,编辑 CertSrv 请求 DCOM 应用程序的属性:
本地化图像
更改“终结点”以选择静态终结点并指定 TCP 端口号(在上一图中为 900)。
在此示例中,防火墙需要允许端口 135 和端口 900。
重新启动 Microsoft 证书颁发机构以应用更改。
无需配置 FAS 服务器(或任何其他使用证书颁发机构的计算机),因为 DCOM 使用 RPC 端口 135 进行协商。当客户端需要使用 DCOM 时,它会连接到服务器上的 DCOM RPC 服务并请求访问特定的 DCOM 服务器。这会触发端口 900(在此示例中)打开,并且 DCOM 服务器会指示客户端连接到该端口。

预生成用户证书

在 FAS 服务器中预生成用户证书后,用户的登录时间将显著缩短。以下部分介绍了如何为单个或多个 FAS 服务器执行此操作。

获取 Active Directory 用户列表

您可以通过查询 AD 并将用户列表存储到文件中(例如,.csv 文件)来改进证书生成,如下例所示。
Import-Module ActiveDirectory

$searchbase = "cn=users,dc=bvt,dc=local" # AD User Base to Look for Users, leave it blank to search all
$filename = "user_list.csv" # Filename to save

if ($searchbase -ne ""){
    Get-ADUser -Filter {(UserPrincipalName -ne "null") -and (Enabled -eq "true")} -SearchBase $searchbase -Properties UserPrincipalName | Select UserPrincipalName | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $filename
} else {
    Get-ADUser -Filter {(UserPrincipalName -ne "null") -and (Enabled -eq "true")} -Properties UserPrincipalName | Select UserPrincipalName | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $filename
}
Get-ADUser 是一个用于查询用户列表的标准 cmdlet。前面的示例包含一个筛选器参数,用于仅列出具有 UserPrincipalName 且帐户状态为“enabled”的用户。
SearchBase 参数缩小了在 AD 中搜索用户的范围。如果您想包含 AD 中的所有用户,可以保留此项。
注意:
此查询可能会返回大量用户。
CSV 文件看起来像这样:
本地化图像

FAS 服务器

以下 PowerShell 脚本获取之前生成的用户列表并创建用户证书列表。
Add-PSSnapin Citrix.A*
$csv = "user_list.csv"
$rule = "default" # rule/role in your admin console
$users = Import-Csv -encoding utf8 $csv
foreach ( $user in $users )
{
    $server = Get-FasServerForUser -UserPrincipalNames $user.UserPrincipalName
    if( $server.Server -ne $NULL) {
        New-FasUserCertificate -Address $server.Server -UserPrincipalName $user.UserPrincipalName -CertificateDefinition $rule"_Definition" -Rule $rule
    }
    if( $server.Failover -ne $NULL) {
        New-FasUserCertificate -Address $server.Failover -UserPrincipalName $user.UserPrincipalName -CertificateDefinition $rule"_Definition" -Rule $rule
    }
}
如果您有多个 FAS 服务器,特定用户的证书会生成两次:一次在主服务器中,另一次在故障转移服务器中。
此前的脚本是为名为“default”的规则定制的。如果您有不同的规则名称(例如,“hello”),请更改脚本中的 $rule 变量。
本地化图像

续订 FAS 授权证书

您可以在不中断 FAS 用户的情况下续订 FAS 授权证书。

使用 FAS 管理控制台

  • 单击“重新授权”以生成新的 FAS 授权证书请求: 重新授权
您需要在 CA 手动批准该请求。有关详细信息,请参阅授权联合身份验证服务。
  • 生成新的授权证书后,FAS 会指示该证书尚未与您的规则关联。单击“更新配置”以将新的授权证书与您的规则关联。 更新配置

使用 PowerShell

完成以下序列:
  1. 创建授权证书:New-FasAuthorizationCertificate
  2. 记下新授权证书的 GUID,如 Get-FasAuthorizationCertificate 返回所示。
  3. 交换新的授权证书:Set-FasCertificateDefinition –AuthorizationCertificate <GUID>
  4. 删除旧的授权证书:Remove-FasAuthorizationCertificate。确保使用 DeleteUserCerts $false option,以免中断用户活动。

撤销 FAS 授权并删除 FAS 证书

使用 FAS 管理控制台

  • 单击撤销授权链接并删除授权证书。您可以删除所有用户证书和所有规则(尽管这对于清除证书不是必需的)。 撤销授权
  • 如果不删除规则,则在以后授权 FAS 时会收到警告: 警告
该警告指示授权证书尚未与您的规则关联。单击更新配置以将新的授权证书与您的规则关联。

使用 PowerShell

使用以下 PowerShell 命令删除授权证书和用户证书:
$AuthCert = Get-FasAuthorizationCertificate -Address localhost
Remove-FasAuthorizationCertificate -Address localhost -Id $AuthCert.Id
注意:
Get-FasAuthorizationCertificate 返回授权证书和待处理授权证书请求的列表,供您在继续执行 Remove-FasAuthorizationCertificate 之前检查 $AuthCert 的值。
您可以通过将 DeleteUserCerts 参数设置为 false 来删除授权证书,但保留用户证书:
Remove-FasAuthorizationCertificate -Address localhost -Id $AuthCert.Id -DeleteUserCerts $false
剩余的用户证书仍可由 FAS 用于 VDA 登录和会话内证书,这在续订 FAS 授权时非常有用。有关详细信息,请参阅续订 FAS 授权证书。
  • 您可以按如下方式删除用户证书:
Remove-FasUserCertificate -Address localhost
此命令将从 FAS 服务器中删除所有用户证书。该命令具有用于筛选要删除的证书集的选项。
注意:
当FAS从其内部存储中移除授权证书或用户证书时,它还会删除关联的密钥对。

脱机授权

可以使用PowerShell脱机请求FAS授权证书。这适用于不希望其证书颁发机构通过联机证书签名请求颁发授权证书的组织。
  1. 在使用管理控制台进行初始FAS配置期间,仅完成前两个步骤:部署证书模板和设置证书颁发机构。 Deploy templates and Set up certificate authority
  2. 在FAS服务器上加载以下PowerShell cmdlet:
    Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1`
  3. 通过在FAS服务器上输入以下PowerShell cmdlet,生成密钥对并创建证书签名请求:

    $AuthCertRequest = New-FasAuthorizationCertificateRequest -Address localhost $AuthCertRequest
    这将导致:
    结果
    注意:
    生成的密钥对的属性由FAS授权密钥配置决定。有关详细信息,请参阅私钥保护。
  4. 将证书请求复制到磁盘:
    `$AuthCertRequest.CertificateRequest > c:\temp\authcert.csr
  5. 将证书请求文件(在此示例中为 authcert.csr)提交给您的证书颁发机构,批准请求,并获取证书响应。
    以下五个步骤专门针对使用Microsoft企业证书颁发机构;对于其他CA,请联系您的CA供应商寻求帮助。
    • 在您的证书颁发机构服务器上,添加“证书模板”MMC管理单元。右键单击Citrix_RegistrationAuthority_ManualAuthorization模板,然后选择复制模板。选择常规选项卡。更改名称和有效期。在此示例中,名称为 Offline_RA,有效期为两年:
      私钥模板属性
    • 在您的证书颁发机构服务器上,添加证书颁发机构 MMC 管理单元。右键单击“证书模板”。选择“新建”,然后单击“要颁发的证书模板”。选择您创建的模板。
    • 通过在 FAS 服务器上的 PowerShell 命令提示符中键入以下内容,将证书签名请求提交到您的证书颁发机构:
      certreq -submit -attrib "certificatetemplate:<certificate template from step 5a>" <certificate request file from step 4>
      例如:
      certreq -submit -attrib "certificatetemplate:Offline_RA" C:\temp\authcert.csr
      运行上述命令会产生:
      证书模板结果
      此时可能会出现“证书颁发机构列表”窗口。此示例中的证书颁发机构已启用 DCOM(顶部)和 HTTP(底部)注册。如果可用,请选择“DCOM”,然后单击“确定”:
      证书颁发机构列表
      指定证书颁发机构后,命令完成并显示 RequestID:
      证书请求待处理状态
    • 在证书颁发机构服务器上,在证书颁发机构 MMC 管理单元中,单击“待处理请求”。找到请求 ID。然后右键单击该请求并选择“颁发”。
    • 选择“已颁发的证书”节点。找到已颁发的证书(请求 ID 必须匹配)。双击打开证书。选择“详细信息”选项卡。单击“复制到文件”。“证书导出向导”启动。单击“下一步”。为文件格式选择以下选项:
      私钥证书导出向导
    格式必须是“加密消息语法标准 – PKCS #7 证书 (.P7B)”,并且必须选择“如果可能,包括证书路径中的所有证书”。
  6. 将导出的证书文件复制到 FAS 服务器上。
  7. 通过在 FAS 服务器上输入以下 PowerShell cmdlet,将注册机构证书导入 FAS 服务器:
    Import-FasAuthorizationCertificateResponse -Address localhost -Id $AuthCertRequest.Id -Pkcs7CertificateFile <Certificate file from step 6>
    例如:
    Import-FasAuthorizationCertificateResponse -Address localhost -Id $AuthCertRequest.Id -Pkcs7CertificateFile C:\temp\response.p7b
    运行此命令将产生:
    导入 FAS 授权证书响应
  8. 检查 FAS 管理控制台。它必须显示 FAS 现已获得授权。
    授权服务
    注意:
    授权此服务步骤旁边有一个绿色复选标记。
  9. 通过创建规则继续配置。有关更多详细信息,请参阅配置规则。

相关信息