证书颁发机构配置

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

在 FAS 中设置多个 CA 服务器

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

编辑包含两个 CA 的规则。

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

如果您要使用的某个 CA 未发布所需的模板,请为该 CA 执行设置证书颁发机构步骤。

注意:

您不必为每个 CA 执行授权此服务步骤,因为在此步骤中配置的授权证书可用于您的任何 CA。

预期行为更改

在您使用多个 CA 服务器配置 FAS 服务器后,用户证书生成将在所有配置的 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 服务并请求访问特定的 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
}
<!--NeedCopy-->

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
    }
}
<!--NeedCopy-->

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

此前的脚本适用于名为“default”的规则。如果您有不同的规则名称(例如,“hello”),请更改脚本中的 $rule 变量。

  • 本地化图像

续订 FAS 授权证书

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

使用 FAS 管理控制台

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

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

-  生成新的授权证书后,FAS 会指示它尚未与您的规则关联。单击**更新配置**以将新的授权证书与您的规则关联。 ![更新配置](/en-us/federated-authentication-service/2507-ltsr/media/update-the-config-fas-admin-console.png)

使用 PowerShell

完成以下序列:

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

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

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

  4. 删除旧的授权证书:Remove-FasAuthorizationCertificate。确保使用 DeleteUserCerts $false 选项,以便用户活动不会中断。

取消授权 FAS 并删除 FAS 证书

使用 FAS 管理控制台

-  单击**取消授权**链接并删除授权证书。您可以删除所有用户证书和所有规则(尽管清除证书并非必需)。
-  ![取消授权](/en-us/federated-authentication-service/2507-ltsr/media/deauthorize-service-and-fas-admin-console.png)

-  如果您不删除规则,当您稍后授权 FAS 时,您会收到警告: ![警告](/en-us/federated-authentication-service/2507-ltsr/media/update-the-config-fas-admin-console.png)

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

使用 PowerShell

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

$AuthCert = Get-FasAuthorizationCertificate -Address localhost
Remove-FasAuthorizationCertificate -Address localhost -Id $AuthCert.Id
<!--NeedCopy-->
-  > **注意:** > > `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 从其内部存储中删除授权证书或用户证书时,它还会删除关联的密钥对。

  • 离线授权

  • FAS 授权证书可以使用 PowerShell 离线请求。这适用于不希望其证书颁发机构通过在线证书签名请求颁发授权证书的组织。
  1. 在使用管理控制台进行初始 FAS 配置期间,仅完成前两个步骤:部署证书模板设置证书颁发机构Deploy templates and Set up certificate authority

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

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

    
    $AuthCertRequest = New-FasAuthorizationCertificateRequest -Address localhost $AuthCertRequest
    
    <!--NeedCopy-->
    

    这将产生:

    Result

    注意:

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

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

    `$AuthCertRequest.CertificateRequest > c:\temp\authcert.csr
    <!--NeedCopy-->
    
  5. 将证书请求文件(在此示例中为 authcert.csr)提交给您的证书颁发机构,批准请求并获取证书响应。

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

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

      Private keys template properties

    • 在您的证书颁发机构服务器上,添加“证书颁发机构”MMC 管理单元。右键单击证书模板。选择新建,然后单击要颁发的证书模板。选择您创建的模板。

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

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

      例如:

      certreq -submit -attrib "certificatetemplate:Offline_RA" C:\temp\authcert.csr
      <!--NeedCopy-->
      

      运行上述命令将产生:

      Certificate template result

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

      Certification Authority List

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

      Certificate request pending status

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

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

      Private keys certificate export wizard

    格式必须是 Cryptographic Message Syntax Standard – PKCS #7 Certificates (.P7B),并且必须选择如果可能,包括证书路径中的所有证书

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

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

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

    例如:

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

    运行此命令将产生:

    Import FAS authorization certificate response

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

    Authorize service

    注意:

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

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

相关信息

证书颁发机构配置