联邦身份验证服务证书颁发机构配置
本文介绍了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配置选项的效果。
完成以下顺序:
创建新的授权证书:
New-FasAuthorizationCertificate
注意新授权证书的GUID,由:
Get-FasAuthorizationCertificate
将FAS服务器置于维护模式:
Set-FasServer -Address
-MaintenanceMode $true 更换新的授权证书:
Set-FasCertificateDefinition -AuthorizationCertificate < GUID >
退出维护模式:
设置- fasserver -Address
-MaintenanceMode $false 删除旧的授权证书:
Remove-FasAuthorizationCertificate
相关信息
- 的联合身份验证服务本文是FAS安装配置的主要参考。
- 常见的FAS部署总结在联邦身份验证服务体系结构概述篇文章。
- 其他“如何”的文章在联邦身份验证服务配置和管理篇文章。