Configurar el Servicio de autenticación federada para la entidad de certificación

En este artículo, se describe la configuración avanzada del servicio de autenticación federada (FAS) de Citrix para que se integre con los servidores de la entidad de certificación (CA) que no admite la consola de administración de FAS. En las instrucciones, se usan las API de PowerShell que suministra el servicio FAS. Debe tener conocimientos básicos de PowerShell para poder ejecutar las instrucciones de este artículo.

Configurar varios servidores de CA para usar en FAS

En esta sección, se describe cómo configurar un servidor FAS para usar varios servidores de CA y emitir certificados. Lo que permite equilibrar la carga y conmutar por error en los servidores de CA.

Paso 1: Calcular cuántos servidores de CA puede ubicar el servicio FAS

Use el cmdlet Get-FASMsCertificateAuthority para determinar a qué servidores de CA puede conectarse el servicio FAS. En el siguiente ejemplo, se muestra que FAS puede conectarse a tres servidores de CA.

PS > Add-PSSnapin Citrix*
PS > Get-FasMsCertificateAuthority

Address                         IsDefault   PublishedTemplates
-------                         ---------   ------------------

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...

Paso 2: Modificar la definición de certificado existente

Citrix recomienda crear un rol mediante la consola de administración de FAS, en lugar de utilizar PowerShell para crear el rol. Esto evita la complicación de tener que agregar SDL manualmente más tarde. En el siguiente ejemplo, se crea un rol denominado “default”, con la regla de acceso:

imagen localizada

Para agregar varias entidades de certificación al campo de la entidad de certificación, debe configurar la definición de certificado con PowerShell. (En esta versión, no se admite la agregación de varias entidades de certificación desde la consola de administración de FAS).

En primer lugar, necesita el nombre de la definición de certificado. Este nombre no se puede determinar a partir de la consola de administración; use el cmdlet Get-FASCertificateDefinition.

PS > Get-FasCertificateDefinition

Name                        : default_Definition
CertificateAuthorities      : {DC1.bvt.local\bvt-DC1-CA}
MsTemplate                  : Citrix_SmartcardLogon
AuthorizationCertificate    : 86ce221c-7599-43a3-9dbd-8e6a3c2be7b7
PolicyOids                  : {}
InSession                   : True

El equivalente en la interfaz de usuario es:

imagen localizada

Una vez obtenido el nombre de la definición de certificado, modifíquela para obtener una lista de CertificateAuthorities, en lugar de una sola:

imagen localizada

Ahora, el cmdlet Get-FASCertificateDefinition debe devolver:

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

Después de configurar varios servidores de entidad de certificación (CA), no se puede utilizar la consola de administración de FAS para configurar FAS. Los campos ‘Entidad de certificación’ y ‘Plantilla de certificado’ están vacíos, como se muestra a continuación:

imagen localizada

Nota:

Si utiliza la consola para modificar la regla de acceso, se sobrescribe la configuración de las distintas CA. Repita simplemente el paso 2 para reconfigurar con todas las entidades de certificación.

Si desea reconfigurar las listas ACL de la regla de acceso de PowerShell y no está seguro de qué valores suministrar, le sugerimos lo siguiente:

  • Cree una segunda regla (por ejemplo, llamada “prueba”) con una sola entidad de certificación.
  • Configure las listas ACL según sea necesario en la regla “prueba”.
  • Use PowerShell para inspeccionar la lista ACL (Get-FasRule —name “prueba”).
  • Use PowerShell para aplicar la lista ACL a la regla original (Set-FasRule).
  • Elimine la regla “prueba”, puesto que ya no es necesaria.

Cambios de comportamiento previstos

Después de configurar el servidor FAS con varios servidores de CA, la generación de certificados de usuario se distribuye entre todos los servidores de CA configurados. Además, si se produce un error en uno de los servidores de CA configurados, el servidor FAS cambiará a otro servidor disponible de la entidad de certificación.

Configurar CA de Microsoft para el acceso por TCP

De forma predeterminada, la entidad de certificación de Microsoft utiliza DCOM para el acceso. Esto puede provocar complicaciones cuando se implemente la seguridad del firewall, por lo que Microsoft puede cambiar a un puerto TCP estático. En la CA de Microsoft, use Inicio>Ejecutar>dcomcnfg.exe para abrir el panel de configuración DCOM, expanda Equipos>Mi equipo>Configuración DCOM para mostrar el nodo CertSrv Request y, a continuación, modifique las propiedades de la aplicación DCOM de la solicitud CertSrv:

imagen localizada

Cambie los “extremos” para seleccionar un extremo estático y especifique un número de puerto TCP (900 en la imagen de arriba).

Reinicie la entidad de certificación de Microsoft, y envíe una solicitud de certificado. Si ejecuta “netstat –a –n –b”, debería ver que ahora certsvr escucha en el puerto 900:

imagen localizada

No es necesario configurar el servidor del servicio FAS (o cualquier otra máquina que use la entidad de certificación) porque DCOM tiene una fase de negociación que usa el puerto RPC. Cuando un cliente quiere usar DCOM, se conecta al servicio de RPC de DCOM que está presente en el certificado de servidor y solicita acceso a un servidor DCOM determinado. Esta acción abre el puerto 900, y el servidor DCOM indica al servidor de FAS cómo conectarse.

Generar previamente los certificados de usuario

El tiempo de inicio de sesión mejora significativamente para los usuarios si los certificados de usuario se generan previamente en el servidor de FAS. En las siguientes secciones, se describe cómo hacerlo con uno o varios servidores de FAS.

Obtener una lista de usuarios de Active Directory

Puede mejorar la generación de certificados si consulta AD y almacena la lista de usuarios en un archivo (por ejemplo, un archivo CSV), como se muestra en el siguiente ejemplo.

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 es un cmdlet estándar para consultar una lista de usuarios. El ejemplo anterior contiene un argumento de filtro para incluir en la lista solo a los usuarios con un UserPrincipalName y un estado de cuenta “habilitado”.

El argumento SearchBase limita la parte de Active Directory en que buscar usuarios. Puede omitirlo si quiere incluir a todos los usuarios de AD. Nota: Es posible que esta consulta devuelva una gran cantidad de usuarios.

El archivo CSV tiene un aspecto similar a:

imagen localizada

Servidor de FAS

El siguiente script de PowerShell utiliza la lista de usuarios previamente generada y crea a partir de ella una lista de los certificados de usuario.

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-->

Si dispone de varios servidores FAS, el certificado de un usuario concreto se generará dos veces: uno en el servidor principal y otro en el servidor de conmutación por error.

El script anterior está orientado a una regla denominada “default”. Si tiene otro nombre de regla (por ejemplo, “hola”), cambie la variable $rule en el script.

imagen localizada

Renovar certificados de la entidad de registro

Si utiliza más de un servidor de FAS, puede renovar un certificado de autorización de FAS sin que ello afecte a los usuarios con sesión iniciada. Nota: Aunque también puede usar la interfaz gráfica de usuario para desautorizar y reautorizar FAS, usarla tiene como consecuencia que se restablecen las opciones de configuración de FAS.

Lleve a cabo los siguientes pasos:

  1. Cree un nuevo certificado de autorización: New-FasAuthorizationCertificate

  2. Escriba el GUID del nuevo certificado de autorización que devuelve: Get-FasAuthorizationCertificate

  3. Coloque el servidor de FAS en el modo de mantenimiento: Set-FasServer –Address <FAS server> -MaintenanceMode $true

  4. Cambie el nuevo certificado de autorización: Set-FasCertificateDefinition –AuthorizationCertificate <GUID>

  5. Desactive el modo de mantenimiento del servidor de FAS: Set-FasServer –Address <FAS server> -MaintenanceMode $false

  6. Elimine el certificado anterior de autorización: Remove-FasAuthorizationCertificate

Información relacionada

Configurar el Servicio de autenticación federada para la entidad de certificación