联邦身份验证服务证书颁发机构配置

本文介绍了Citrix联邦身份验证服务(FAS)的高级配置,以与FAS管理控制台不支持的证书颁发机构(CA)服务器集成。说明使用FAS提供的PowerShell api。在执行本文中的任何指令之前,您应该对PowerShell有基本的了解。

建立多个CA服务器用于FAS

介绍如何在单个FAS服务器上使用多个CA服务器颁发证书。这允许CA服务器的负载均衡和故障转移。

步骤1:确定FAS可以定位到多少个CA服务器

使用get - fasmcertificateauthority cmdlet来确定FAS可以连接到哪个CA服务器。下面的示例显示了FAS可以连接到3个CA服务器。

PS > Add-PSSnapin Citrix* PS > get - fasmcertificateauthority Address IsDefault publhedtemplates ---------------- ------------------ DC1.bvt。local\bvt-DC1-CA False {Citrix_SmartcardLogon, Citrix_Regis…ca1.bvt.local \ CA1.bvt。local False {Citrix_SmartcardLogon, Citrix_Regis…ca2.bvt.local \ ca2.bvt。local False {Citrix_SmartcardLogon, Citrix_Regis…

步骤2:修改现有的证书定义

Citrix建议您使用FAS管理控制台创建角色,而不是使用PowerShell创建角色。这避免了以后必须手动添加SDL的复杂性。在下面的示例中,创建了一个名为“default”的角色,并配置了访问规则:

局部的图片

要将多个ca添加到证书颁发机构字段,必须使用PowerShell配置证书定义。(在此版本中,不支持从FAS管理控制台添加多个ca。)

首先,您需要证书定义名称。无法从管理控制台确定名称;使用Get-FASCertificateDefinition cmdlet。

PS > Get-FasCertificateDefinition Name: default_Definition CertificateAuthorities: {DC1.bvt. bvt. bvt. bvt. bvt. bvt. bvt. bvt. bvt. bvt.local\bv - dc1 - ca} MsTemplate: Citrix_SmartcardLogon AuthorizationCertificate: 86ce221c-7599-43a3-9dbd-8e6a3c2be7b7 policyyoids: {} InSession: True

等效的UI是:

局部的图片

获得证书定义名称后,修改证书定义,使其包含一系列CertificateAuthorities,而不是只有一个:

局部的图片

Get-FASCertificateDefinition cmdlet现在返回:

PS > Get-FasCertificateDefinition Name: default_Definition CertificateAuthorities: {DC1.bvt. bvt. bvt. bvt. bvt. bvt. bvt. bvt. bvt. bvt.当地\ bvt-DC1-CA ca1.bvt.local \ CA1.bvt。地方、ca2.bvt.local \ ca2.bvt。local} MsTemplate: Citrix_SmartcardLogon AuthorizationCertificate: 86ce221c-7599-43a3-9dbd-8e6a3c2be7b7 policyyoids: {} InSession: True

配置多个CA服务器后,将无法使用FAS管理控制台配置FAS。“证书颁发机构”和“证书模板”字段为空,如下所示:

局部的图片

注意:

如果您使用控制台修改访问规则,您的多个CA配置将被覆盖。只需重复第2步,使用所有证书颁发机构重新配置即可。

如果您想从powershell重新配置访问规则acl,并且不确定要提供哪些值,我们建议如下:

  • 用单个CA创建第二个规则(例如,命名为“testing”)。
  • 在“testing”规则上,根据需要配置acl。
  • 使用PowerShell检查ACL (Get-FasRule -name " testing ")。
  • 使用PowerShell将ACL应用到原始规则(Set-FasRule)。
  • 删除不再需要的“testing”规则。

预期行为的变化

配置多个CA服务器后,用户证书将在所有配置的CA服务器上分发。此外,如果配置的CA服务器之一出现故障,FAS服务器将切换到另一个可用的CA服务器。

配置Microsoft CA支持TCP访问

默认情况下,Microsoft CA使用DCOM进行访问。在实现防火墙安全性时,这可能会导致复杂性,因此Microsoft提供了切换到静态TCP端口的条款。在Microsoft CA上,打开DCOM配置面板,编辑“CertSrv Request”DCOM应用程序的属性:

局部的图片

更改“端点”以选择一个静态端点并指定一个TCP端口号(上图中的900)。

重新启动Microsoft CA并提交证书请求。如果你运行" netstat -a -n -b ",你应该看到certsvr正在监听端口900:

局部的图片

不需要配置FAS服务器(或使用CA的任何其他机器),因为DCOM有一个使用RPC端口的协商阶段。当客户端需要使用DCOM时,它连接到证书服务器上的DCOM RPC服务,并请求访问特定的DCOM服务器。这将触发900端口打开,DCOM服务器将指示FAS服务器如何连接。

提前生成用户证书

当在FAS服务器中预生成用户证书时,用户的登录时间将显著提高。下面几节描述如何对单个或多个FAS服务器进行此操作。

获取Active Directory用户列表

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

Import-Module ActiveDirectory $searchbase = "cn=users,dc=bvt,dc=local" # AD User Base to Look for users,$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。$user = Import-Csv -encoding utf8 $csv foreach ($user in $users) {$server = Get-FasServerForUser -UserPrincipalNames $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user. $user。UserPrincipalName if($服务器。Server -ne $NULL) {New-FasUserCertificate -Address $ Server . net}。服务器-UserPrincipalName $ user。UserPrincipalName -CertificateDefinition $rule"_Definition" -Rule $rule}Failover -ne $NULL) {New-FasUserCertificate -Address $server. cfg . cfg . cfg . cfg . cfg。故障转移-UserPrincipalName $ user。UserPrincipalName -CertificateDefinition $rule"_Definition" -Rule $rule}} 

如果您有多个FAS服务器,那么将生成两次特定用户的证书:一个在主服务器中,另一个在故障转移服务器中。

上面的脚本满足了名为“default”的规则。如果您有一个不同的规则名称(例如,' hello '),只需更改脚本中的$rule变量。

局部的图片

更新登记机关证书

如果使用多个FAS服务器,可以在不影响登录用户的情况下续签FAS授权证书。注意:尽管您也可以使用GUI来取消和重新授权FAS,但这具有重置FAS配置选项的效果。

完成以下顺序:

  1. 创建新的授权证书:New-FasAuthorizationCertificate

  2. 注意新授权证书的GUID,由:Get-FasAuthorizationCertificate

  3. 将FAS服务器置于维护模式:Set-FasServer -Address -MaintenanceMode $true

  4. 更换新的授权证书:Set-FasCertificateDefinition -AuthorizationCertificate < GUID >

  5. 退出维护模式:设置- fasserver -Address -MaintenanceMode $false

  6. 删除旧的授权证书:Remove-FasAuthorizationCertificate

联邦身份验证服务证书颁发机构配置