证书颁发机构配置
本文介绍了 Federated Authentication Service (FAS) 的高级配置,以便与证书颁发机构 (CA) 服务器集成。这些配置中的大多数不受 FAS 管理控制台支持。这些说明使用 FAS 提供的 PowerShell API。在执行本文中的任何说明之前,您必须具备 PowerShell 的基本知识。
为 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
}
<!--NeedCopy-->
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
}
}
<!--NeedCopy-->
如果您有多个 FAS 服务器,特定用户的证书将生成两次:一个在主服务器中,另一个在故障转移服务器中。
此前的脚本适用于名为“default”的规则。如果您有不同的规则名称(例如,“hello”),请更改脚本中的 $rule 变量。

续订 FAS 授权证书
您可以续订 FAS 授权证书而不中断 FAS 用户。
使用 FAS 管理控制台
- 单击“重新授权”以生成新的 FAS 授权证书请求:
您需要在 CA 上手动批准该请求。有关详细信息,请参阅授权 Federated Authentication Service。
- 生成新的授权证书后,FAS 会指示它尚未与您的规则关联。单击“更新配置”以将新的授权证书与您的规则关联。
使用 PowerShell
完成以下序列:
-
创建授权证书:
New-FasAuthorizationCertificate -
记下新授权证书的 GUID,由以下命令返回:
Get-FasAuthorizationCertificate -
交换新的授权证书:
Set-FasCertificateDefinition –AuthorizationCertificate <GUID> -
删除旧的授权证书:
Remove-FasAuthorizationCertificate。确保使用DeleteUserCerts $false选项,以便不中断用户活动。
取消授权 FAS 并删除 FAS 证书
使用 FAS 管理控制台
- 单击“**取消授权**”链接并删除授权证书。您可以删除所有用户证书和所有规则(尽管这对于清除证书不是必需的)。 
- 如果您不删除规则,当您稍后授权 FAS 时,您会收到警告:
- 
该警告指示授权证书尚未与您的规则关联。单击“更新配置”以将新的授权证书与您的规则关联。
使用 PowerShell
使用以下 PowerShell 命令删除授权证书和用户证书:
$AuthCert = Get-FasAuthorizationCertificate -Address localhost
Remove-FasAuthorizationCertificate -Address localhost -Id $AuthCert.Id
<!--NeedCopy-->
注意:
- > `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 授权证书。这适用于不希望其证书颁发机构通过联机证书签名请求颁发授权证书的组织。
-
- 在首次使用管理控制台配置 FAS 期间,仅完成前两个步骤:部署证书模板和设置证书颁发机构。

-
在 FAS 服务器上加载以下 PowerShell cmdlet:
Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1` <!--NeedCopy--> -
通过在 FAS 服务器上输入以下 PowerShell cmdlet 来生成密钥对并创建证书签名请求:
$AuthCertRequest = New-FasAuthorizationCertificateRequest -Address localhost $AuthCertRequest <!--NeedCopy-->结果如下:

注意:
生成的密钥对的属性由 FAS 授权密钥配置决定。有关更多详细信息,请参阅私钥保护。
-
将证书请求复制到磁盘:
`$AuthCertRequest.CertificateRequest > c:\temp\authcert.csr <!--NeedCopy--> -
将证书请求文件(在此示例中为 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> <!--NeedCopy-->例如:
certreq -submit -attrib "certificatetemplate:Offline_RA" C:\temp\authcert.csr <!--NeedCopy-->运行上述命令将得到:

此时可能会出现“证书颁发机构列表”窗口。此示例中的证书颁发机构已启用 DCOM(顶部)和 HTTP(底部)注册。如果可用,请选择 DCOM,然后单击确定:

指定证书颁发机构后,命令完成并显示 RequestID:

-
在证书颁发机构服务器上,在“证书颁发机构”MMC 管理单元中,单击待处理请求。找到请求 ID。然后右键单击该请求并选择颁发。
-
选择已颁发的证书节点。找到已颁发的证书(请求 ID 必须匹配)。双击以打开证书。选择详细信息选项卡。单击复制到文件。“证书导出向导”启动。单击下一步。为文件格式选择以下选项:

格式必须为 Cryptographic Message Syntax Standard – PKCS #7 Certificates (.P7B),并且必须选择如果可能,包括所有证书路径中的所有证书。
-
-
将导出的证书文件复制到 FAS 服务器上。
-
通过在 FAS 服务器上输入以下 PowerShell cmdlet,将注册机构证书导入 FAS 服务器:
Import-FasAuthorizationCertificateResponse -Address localhost -Id $AuthCertRequest.Id -Pkcs7CertificateFile <Certificate file from step 6> <!--NeedCopy-->例如:
Import-FasAuthorizationCertificateResponse -Address localhost -Id $AuthCertRequest.Id -Pkcs7CertificateFile C:\temp\response.p7b <!--NeedCopy-->运行此命令将得到:

-
检查 FAS 管理控制台。它必须显示 FAS 现已获得授权。

注意:
步骤授权此服务旁边有一个绿色复选标记。
-
通过创建规则继续配置。有关更多详细信息,请参阅配置规则。
