证书颁发机构配置

本文介绍联合身份验证服务 (FAS) 的高级配置,以便与证书颁发机构 (CA) 服务器集成。 这些配置中的绝大多数都不受 FAS 管理控制台支持。 这些说明信息将采用 FAS 所提供的 PowerShell API。 在运行本文中的任何说明之前,您必须具备 PowerShell 的基本知识。

设置用于 FAS 的多个 CA 服务器

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

编辑具有两个 CA 的规则。

您选择的所有 CA 都必须发布 Citrix_SmartcardLogon 证书模板(或在规则中选择的任何模板)。

如果您想要使用的其中一个 CA 没有发布所需的模板,请对该 CA 执行设置证书颁发机构步骤。

注意:

您无需对每个 CA 都执行授权此服务步骤,因为在此步骤中配置的授权证书可以在任意 CA 中使用。

预期的行为变化

在配置 FAS 服务器和多个 CA 服务器后,将在所有已配置的 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 Service,并请求访问特定的 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 且帐户状态为“已启用”的用户。

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 变量。

本地化后的图片

续订 FAS 授权证书

可以续订 FAS 授权证书,而不会中断 FAS 用户。

使用 FAS 管理控制台

  • 单击重新授权生成新 FAS 授权证书请求: 重新授权

您需要在 CA 手动批准该请求。 有关详细信息,请参阅授权联合身份验证服务

  • 生成了新授权证书后,FAS 会指示其尚未与您的规则关联。 单击更新配置以将新授权证书与您的规则相关联。 更新配置

使用 PowerShell

请完成以下操作过程:

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

  2. 记下 Get-FasAuthorizationCertificate 命令返回的新授权证书的 GUID

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

  4. 删除旧授权证书:Remove-FasAuthorizationCertificate。 清务必使用选项 DeleteUserCerts $false,以免用户活动中断。

取消授权 FAS 并删除 FAS 证书

使用 FAS 管理控制台

  • 单击取消授权链接并删除授权证书。 可以删除所有用户证书和所有规则(尽管这不是清除证书所必需的操作)。 取消授权

  • 如果不删除这些规则,则当您稍后授权 FAS 时会收到警告: 警告

该警告指示授权证书尚未与您的规则相关联。 单击更新配置以将新授权证书与您的规则相关联。

使用 PowerShell

请使用以下 PowerShell 命令删除授权证书和用户证书:

$AuthCert = Get-FasAuthorizationCertificate -Address localhost Remove-FasAuthorizationCertificate -Address localhost -Id $AuthCert.Id

注意:

Get-FasAuthorizationCertificate 返回授权证书和待处理的授权证书请求的列表,供您在继续执行 Remove-FasAuthorizationCertificate 之前检查 $AuthCert 的值。

可以通过将 DeleteUserCerts 参数设置为 false 来删除授权证书,但保留用户证书:

Remove-FasAuthorizationCertificate -Address localhost -Id $AuthCert.Id -DeleteUserCerts $false

FAS 仍可使用其余的用户证书作为 VDA 登录和会话证书,这在续订 FAS 授权时非常有用。 有关更多详细信息,请参阅续订 FAS 授权证书

  • 可以按如下所示删除用户证书:

Remove-FasUserCertificate -Address localhost

此命令将从 FAS 服务器中删除所有用户证书。 此命令具有过滤已删除的证书集的选项。

注意:

FAS 从其内部存储中删除授权或用户证书时,还将删除关联的密钥对。

脱机授权

可以使用 PowerShell 脱机请求 FAS 授权证书。 这适用于不希望其证书颁发机构通过联机证书签名请求颁发授权证书的组织。

  1. 在使用管理控制台进行初始 FAS 配置时,仅完成前两个步骤:部署证书模板设置证书颁发机构部署模板并设置证书颁发机构

  2. 在 FAS 服务器上加载以下 PowerShell cmdlet:

    Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1`
  3. 通过在 FAS 服务器上输入以下 PowerShell cmdlet 来生成密钥对并创建证书签名请求:

    $AuthCertRequest = New-FasAuthorizationCertificateRequest -Address localhost $AuthCertRequest

    这会导致:

    结果

    注意:

    生成的密钥对的属性由 FAS 授权密钥配置决定。 有关更多详细信息,请参阅私钥保护

  4. 将证书请求复制到磁盘:

    `$AuthCertRequest.CertificateRequest > c:\temp\authcert.csr
  5. 向您的证书颁发机构出示证书请求文件(在此示例中为 authcert.csr),批准该请求并获取证书响应。

    以下五个步骤专门用于使用 Microsoft 企业证书颁发机构;对于其他 CA,请联系您的 CA 供应商寻求帮助。

    • 在您的证书颁发机构服务器上,添加证书模板 MMC 管理单元。 右键单击 Citrix_RegistrationAuthority_ManualAuthorization 模板并选择复制模板。 选择 General(常规)选项卡。 更改名称和有效期。 在此示例中,名称为 Offline_RA,有效期为两年:

      私钥模板属性

    • 在您的证书颁发机构服务器上,添加证书颁发机构 MMC 管理单元。 右键单击 Certificate Templates(证书模板)。 选择 New(新建),然后单击 Certificate Template to Issue(要颁发证书模板)。 选择您创建的模板。

    • 通过在 FAS 服务器上的 PowerShell 命令提示符下键入以下内容,将证书签名请求提交到您的证书颁发机构:

      certreq -submit -attrib "certificatetemplate:<certificate template from step 5a>" <certificate request file from step 4>

      例如:

      certreq -submit -attrib "certificatetemplate:Offline_RA" C:\temp\authcert.csr

      运行上述命令会导致:

      证书模板结果

      此时可能会出现 Certification Authority List(证书颁发机构列表)窗口。 此示例中的证书颁发机构同时启用了 DCOM(顶部)和 HTTP(底部)注册。 如果可用,请选择 DCOM,然后单击确定

      证书颁发机构列表

      指定证书颁发机构后,该命令完成并显示 RequestID:

      证书请求待处理状态

    • 在证书颁发机构服务器上的证书颁发机构 MMC 管理单元中,单击待处理的请求。 查找请求 ID。 然后右键单击该请求,并选择 Issue(颁发)。

    • 选择 Issued Certificates(已颁发的证书)节点。 查找已颁发的证书(请求 ID 必须匹配)。 双击以打开证书。 选择 Details(详细信息)选项卡。 单击 Copy to File(复制到文件)。 证书导出向导将启动。 单击下一步。 为文件格式选择下列选项:

      私钥证书导出向导

    格式必须为 Cryptographic Message Syntax Standard – PKCS #7 Certificates (.P7B),并且必须选择 Include all certificates in the certification path if possible(如果可能,请在认证路径中包含所有证书)。

  6. 将导出的证书文件复制到 FAS 服务器上。

  7. 通过在 FAS 服务器中输入以下 PowerShell cmdlet 将注册机构证书导入 FAS 服务器中:

    Import-FasAuthorizationCertificateResponse -Address localhost -Id $AuthCertRequest.Id -Pkcs7CertificateFile <Certificate file from step 6>

    例如:

    Import-FasAuthorizationCertificateResponse -Address localhost -Id $AuthCertRequest.Id -Pkcs7CertificateFile C:\temp\response.p7b

    运行此命令的结果如下:

    导入 FAS 授权证书响应

  8. 检查 FAS 管理控制台。 必须显示 FAS 现已获得授权。

    授权服务

    注意:

    步骤授权此服务旁边有一个绿色复选标记。

  9. 通过创建规则继续配置。 有关更多详细信息,请参阅配置规则

相关信息

  • 安装和配置一文是 FAS 安装和配置的主要参考资料。
  • 部署体系结构一文概括了常见的联合身份验证服务部署。
  • 高级配置</strong>一文介绍了其他操作方法文章。</li> </ul>