证书颁发机构配置
本文介绍了 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 服务器。
配置 Microsoft 证书颁发机构以进行 TCP 访问
FAS 使用 DCOM 访问 Microsoft CA。DCOM 使用端口 135 发现服务正在侦听的端口。默认情况下,侦听端口是动态分配的。 这在实施防火墙安全时可能会导致复杂性。因此,Microsoft 提供了一种配置静态端口的机制。
要在 Microsoft CA 上配置静态端口,请选择“开始”>“运行”> dcomcnfg.exe 以打开“DCOM 配置”面板。展开“计算机”>“我的电脑”>“DCOM 配置”以显示 CertSrv Request 节点。然后,编辑 CertSrv Request 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 从其内部存储中删除授权证书或用户证书时,它还会删除关联的密钥对。
离线授权
FAS 授权证书可以使用 PowerShell 离线请求。这适用于不希望其证书颁发机构通过在线证书签名请求颁发授权证书的组织。
-
在使用管理控制台进行初始 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 现已获得授权。

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

