证书颁发机构配置

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

在FAS中设置多个CA服务器

在创建或编辑规则时,您可以使用FAS管理控制台使用多个ca配置FAS:

编辑带有两个ca的规则。

您选择的所有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:

局部的图片

完成以下顺序:

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

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

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

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

  5. 设置FAS服务器退出维护模式:Set-FasServer -Address -MaintenanceMode $false

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

  • 安装和配置本文是FAS安装和配置的主要参考。
  • 中总结了常见的联邦身份验证服务部署部署架构篇文章。
  • 中介绍了其他“操作方法”文章高级配置篇文章。
证书颁发机构配置