证书颁发机构配置
本文描述联邦身份验证服务(FAS)的高级配置,以与证书颁发机构(CA)服务器集成。FAS管理控制台不支持这些配置中的大多数。说明使用FAS提供的PowerShell api。在执行本文中的任何说明之前,您应该对PowerShell有基本的了解。
在FAS中设置多个CA服务器
在创建或编辑规则时,您可以使用FAS管理控制台使用多个ca配置FAS:
您选择的所有ca都必须发布Citrix_SmartcardLogon证书模板(或您在规则中选择的任何模板)。
如果您希望使用的ca之一没有发布所需的模板,请执行设置证书颁发机构步骤。
注意:
你不需要执行授权服务步骤,因为在此步骤中配置的授权证书可以在任何CA上使用。
预期行为的变化
在FAS服务器上配置多个CA服务器后,用户证书生成会分布在所有配置的CA服务器上。另外,如果配置的一个CA服务器失败,FAS服务器将切换到另一个可用的CA服务器。
配置TCP访问的Microsoft证书颁发机构
默认情况下,Microsoft CA使用DCOM进行访问。这在实现防火墙安全时可能会造成复杂性,因此微软提供了切换到静态TCP端口的条款。在Microsoft CA上,使用开始>运行> dcomcnfg.exe打开DCOM配置面板,展开我的电脑电脑> > DCOM配置显示CertSrv请求节点,然后编辑CertSrv请求DCOM应用程序的属性:
更改“Endpoints”以选择一个静态端点并指定TCP端口号(在上图中为900)。
重新启动Microsoft证书颁发机构并提交证书请求。如果你运行Netstat -a -n -b
你应该看到certsvr现在正在监听900端口:
不需要配置FAS服务器(或使用证书颁发机构的任何其他机器),因为DCOM有一个使用RPC端口的协商阶段。当客户端需要使用DCOM时,它连接到证书服务器上的DCOM RPC Service,并请求访问特定的DCOM服务器。这将触发900端口被打开,并且DCOM服务器指示FAS服务器如何连接。
提前生成用户证书
当在FAS服务器中预生成用户证书时,用户的登录时间将显著提高。以下部分描述了如何针对单个或多个FAS服务器实现这一点。
获取Active Directory用户列表
您可以通过查询AD并将用户列表存储到文件(例如.csv文件)来改进证书生成,示例如下。
Import-Module ActiveDirectory $searchbase = "cn=users,dc=bvt,dc=local" # AD查找用户的用户基数,留空以搜索所有$filename = "user_list.csv" #要保存的文件名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" #规则/角色在您的管理控制台$users = Import-Csv -encoding utf8 $csv foreach ($user in $users) {$server = Get-FasServerForUser -UserPrincipalNames $user。UserPrincipalName if($服务器。Server -ne $NULL) {New-FasUserCertificate -Address $ Server。服务器-UserPrincipalName $ user。UserPrincipalName -CertificateDefinition $rule"_Definition" -Rule $rule}故障转移-ne $NULL) {New-FasUserCertificate -Address $server。故障转移-UserPrincipalName $ user。UserPrincipalName -CertificateDefinition $rule"_Definition" -Rule $rule}}
如果您有多个FAS服务器,一个特定用户的证书将生成两次:一个在主服务器中,另一个在故障转移服务器中。
上面的脚本迎合了一个名为“default”的规则。如果您有不同的规则名称(例如,' hello '),只需更改脚本中的$rule变量。
更新登记机关证书
如果有多个FAS服务器正在使用,则可以在不影响已登录用户的情况下更新FAS授权证书。
注意:
你也可以使用GUI重新授权FAS:
完成以下顺序:
创建新的授权证书:
New-FasAuthorizationCertificate
注意新授权证书的GUID,它由:
Get-FasAuthorizationCertificate
将FAS服务器设置为维护模式:
Set-FasServer -Address
-MaintenanceMode $true 交换新的授权证书:
Set-FasCertificateDefinition -AuthorizationCertificate < GUID >
设置FAS服务器退出维护模式:
Set-FasServer -Address
-MaintenanceMode $false 删除旧的授权证书:
Remove-FasAuthorizationCertificate