证书颁发机构配置
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 should have a basic knowledge of PowerShell before executing any instructions in this article.
设置多个 CA 服务器以在 FAS 中使用
您可以在创建或编辑规则时,使用 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 请求节点。然后,编辑 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 变量即可。
本地化图像(/en-us/federated-authentication-service/2402-ltsr/media/fas-caconfig-rule-name.png)
续订注册机构证书
如果正在使用多个 FAS 服务器,您可以续订 FAS 授权证书,而不会影响已登录的用户。
注意:
您还可以使用 GUI 重新授权 FAS:
本地化图像(/en-us/federated-authentication-service/2402-ltsr/media/admin-console-reauthorize.png)
完成以下序列:
-
创建新的授权证书:
New-FasAuthorizationCertificate -
记下新授权证书的 GUID,该 GUID 由以下命令返回:
Get-FasAuthorizationCertificate -
将 FAS 服务器置于维护模式:
Set-FasServer –Address <FAS server> -MaintenanceMode $true -
交换新的授权证书:
Set-FasCertificateDefinition –AuthorizationCertificate <GUID> -
使 FAS 服务器退出维护模式:
Set-FasServer –Address <FAS server> -MaintenanceMode $false -
删除旧的授权证书:
Remove-FasAuthorizationCertificate