Comprobación de listas de revocación de certificados (CRL)

Introducción

Puede configurar StoreFront para que este compruebe el estado de los certificados TLS que utilizan los utilizados los controladores de entrega de CVAD mediante una lista de revocación de certificados (CRL) publicada.Es posible que deba revocar el acceso a un certificado si:

  • cree que la clave privada haya podido desvelarse
  • la CA no es segura
  • la afiliación ha cambiado
  • el certificado se ha reemplazado

Nota:

Este tema solo es relevante cuando se utilizan conexiones HTTPS entre StoreFront y controladores de entrega de Citrix Virtual Apps and Desktops. Las conexiones HTTP a los controladores de entrega no requieren certificado, por lo que el parámetro -CertRevocationPolicy para el almacén, descrito aquí, no tiene ningún efecto.

StoreFront admite la comprobación de revocación de certificados mediante extensiones de certificado de puntos de distribución de CRL (CDP) y listas de revocación de certificados (CRL) instaladas localmente. StoreFront solo admite listas CRL completas, por lo que no se admiten listas CLR delta.

Extensiones de puntos de distribución CRL (CDP)

StoreFront no enumera los recursos de los controladores de entrega provenientes de Citrix Virtual Apps and Desktops que utilizan certificados revocados cuyos números de serie aparecen en la lista CRL publicada. Para detectar qué certificados se han revocado, StoreFront debe poder acceder a la CRL publicada mediante una de las URL definidas en las extensiones de certificado CDP.

Extensiones de puntos de CRL

Intervalo de publicación de CRL

Para que StoreFront detecte los certificados revocados en el Delivery Controller más rápidamente, reduzca el intervalo de publicación de CRL en la CA. Modifique las propiedades de la extensión de puntos de distribución de CRL para establecer un valor de intervalo de publicación CRL inferior adecuado a su infraestructura de clave pública.

Propiedades del certificado revocado

Almacenamiento en caché de listas CRL del cliente

El cliente de infraestructura de clave pública de Windows almacena en caché las CRL localmente. Una CRL más reciente no se descarga hasta que la CRL almacenada localmente haya caducado.

Acceso de StoreFront a listas de revocación de certificados (CRL)

La comprobación de revocación de certificados depende de la capacidad de StoreFront para acceder a las listas CRL. Tenga en cuenta cómo StoreFront se pone en contacto con el servidor web o la entidad de certificación (CA) que publica la CRL, y cómo StoreFront recibe las actualizaciones de CRL.

CA empresariales internas y certificados privados en los controladores de entrega

Para utilizar entidades CA y certificados privados, StoreFront necesita una CA de empresa debidamente configurada y una CRL publicada a la que pueda acceder sin salir de la organización ni la red interna. Consulte la documentación de Microsoft para obtener información sobre cómo configurar la CA de empresaria para publicar extensiones CDP. Puede que sea necesario volver a emitir todos los certificados que hubiera en los controladores de entrega que existieran antes de que la CA se configurara para incluir extensiones CDP.

Los servidores de StoreFront y Citrix Virtual Apps and Desktops suelen estar en redes privadas aisladas sin acceso a Internet. En este caso, se deben utilizar CA privadas.

CA públicas externas y certificados públicos en controladores de entrega

Los servidores de StoreFront y los controladores de entrega de Citrix Virtual Apps and Desktops pueden usar certificados emitidos por entidades de certificación públicas. StoreFront debe poder establecer contacto con el servidor web de la CA pública a través de Internet, utilizando la URL a la que se hace referencia en las extensiones CDP. Si StoreFront no puede descargar una copia de la CRL mediante una URL de CDP una vez que se haya revocado un certificado público, StoreFront no puede realizar la comprobación de CRL.

Configuración de la directiva de revocación de certificados

Si quiere establecer la directiva de revocación de certificados para un almacén, utilice los cmdlets Get-STFStoreFarmConfiguration y Set-STFStoreFarmConfiguration de PowerShell para Citrix StoreFront. Tras ejecutar Get-Help Set-STFStoreFarmConfiguration -detailed, aparece la ayuda de PowerShell, con ejemplos de la opción -CertRevocationPolicy. Para obtener más información sobre estos cmdlets de PowerShell para StoreFront, consulte Módulos de PowerShell del SDK de Citrix StoreFront.

La opción -CertRevocationPolicy se puede establecer en los siguientes valores:

Parámetro Descripción
NoCheck StoreFront no comprueba el estado de revocación del certificado que haya presente en el controlador de entrega. StoreFront sigue enumerando los recursos provenientes de los controladores de entrega que utilizan certificados revocados. Esta es la opción predeterminada.
MustCheck Esta es la opción más segura. StoreFront intenta obtener una CRL tras acceder a las URL a las que se hace referencia en las extensiones CDP del certificado en el Delivery Controller. StoreFront no enumera los recursos del Delivery Controller si la CRL no está disponible o si se ha revocado el certificado en uso en el Delivery Controller. La dirección URL puede apuntar a un servidor web interno si el certificado es privado o a un servidor web público de Internet si el certificado es emitido por una entidad de certificación pública.
FullCheck StoreFront intenta acceder a las URL publicadas en las extensiones CDP del certificado del controlador de entrega. Si StoreFront no consigue obtener una copia de la CRL a partir de las URL, sigue permitiendo la enumeración de recursos del Delivery Controller. Si StoreFront obtiene la CRL y se ha revocado el certificado del Delivery Controller, StoreFront no enumera los recursos. La dirección URL puede apuntar a un servidor web interno si el certificado es privado o a un servidor web público de Internet si el certificado es emitido por una entidad de certificación pública.
NoNetworkAccess Solo se comprueban las CRL, que se han importado localmente en el almacén de certificados de Citrix Delivery Servers en el servidor de StoreFront. StoreFront no intenta ponerse en contacto con ninguna de las URL especificadas en las extensiones CDP. Si StoreFront no consigue obtener una copia local de la CRL, seguirá permitiendo la enumeración de recursos del Delivery Controller. Si StoreFront obtiene una copia local de la CRL proveniente del almacén de certificados de Citrix Delivery Servers y se ha revocado el certificado del Delivery Controller, StoreFront no enumera los recursos.

Configurar un almacén para la comprobación de la revocación de certificados

Para establecer la directiva de revocación de certificados para un almacén, abra PowerShell ISE con Ejecutar como administrador y, a continuación, ejecute los siguientes cmdlets de PowerShell. Si tiene varios almacenes, repita este procedimiento en todos ellos. -CertRevocationPolicy es una configuración a nivel de almacén que afecta a todos los Delivery Controllers configurados para el almacén especificado en $StoreVirtualPath.

$SiteID = 1
$StoreVirtualPath = "/Citrix/Store"
$StoreObject = Get-STFStoreService -SiteId $SiteID -VirtualPath
$StoreVirtualPath
Set-STFStoreFarmConfiguration -StoreService $StoreObject -CertRevocationPolicy
"MustCheck"

Para comprobar que la configuración se ha aplicado correctamente o para ver la configuración actual de -CertRevocationPolicy, ejecute lo siguiente:

(Get-STFStoreFarmConfiguration -StoreService $StoreObject).CertRevocationPolicy

Usar CRL importadas localmente en el servidor de StoreFront

Se pueden usar CRL importadas localmente, aunque Citrix no lo recomienda porque:

  • Son difíciles de administrar y actualizar en grandes implementaciones empresariales, donde puede tratarse de varios grupos de servidores de StoreFront.
  • La actualización manual de las CRL en cada servidor de StoreFront, cada vez que se revoca un certificado, es mucho menos eficiente que usar extensiones CDP y CRL publicadas en todo el dominio de Active Directory.

El uso de CRL instaladas localmente o actualizadas se puede utilizar si -CertRevocationPolicy se establece en “NoNetworkAccess” y dispone de los medios para distribuir la CRL de manera eficiente a todos los servidores de StoreFront.

Para utilizar CLR importadas localmente

  1. Copie la CRL en el escritorio del servidor de StoreFront. Si el servidor de StoreFront forma parte de un grupo de servidores, cópiela a todos los servidores de StoreFront del grupo.

  2. Abra el complemento MMC y seleccione Archivo > Agregar o quitar complementos > Certificados > Cuenta de equipo > Almacén de certificados de Citrix Delivery Services.

  3. Haga clic con el botón secundario y seleccione Todas las tareas > Importar y, a continuación, vaya al archivo .CRL y elija Seleccionar todos los archivos > Abrir > Colocar todos los certificados en el siguiente almacén > Citrix Delivery Services.

    Lista de revocación de certificados

Para agregar la CRL al almacén de certificados de Citrix Delivery Services mediante PowerShell o la línea de comandos

  1. Inicie sesión en StoreFront y copie el archivo .CRL al escritorio del usuario actual.

  2. Abra PowerShell ISE y seleccione Ejecutar como administrador.

  3. Ejecute lo siguiente:

    certutil -addstore "Citrix Delivery Services" "$env:UserProfile\Desktop\Example-DC01-CA.crl"
    

Si la operación se lleva a cabo correctamente, el resultado es el siguiente:

Citrix Delivery Services
CRL "CN=Example-DC01-CA, DC=example, DC=com" added to store.
CertUtil: -addstore command completed successfully.

Puede utilizar este comando como ejemplo para distribuir automáticamente la CRL a todos los servidores de StoreFront de su implementación mediante scripts.

Autenticación XML mediante Delivery Controllers

Puede configurar StoreFront para delegar la autenticación de usuarios en los Delivery Controllers de Citrix Virtual Apps and Desktops. Los usuarios no pueden iniciar sesión en StoreFront si se ha revocado el certificado del Delivery Controller. Este comportamiento es preferible ya que los usuarios de Active Directory no deberían poder iniciar sesión en StoreFront si se ha revocado el certificado del Delivery Controller de Citrix Virtual Apps and Desktops, que es lo que los autentica.

Para delegar la autenticación de usuarios a los Delivery Controllers

  1. Configure el almacén para la revocación de certificados tal y como se describe en la sección anterior, Configurar un almacén para la comprobación de la revocación de certificados.

  2. Configure el Delivery Controller para que use HTTPS y siga el procedimiento descrito en Autenticación basada en el servicio XML.

Configurar un servicio de autenticación XML para la comprobación de la revocación de certificados

Estos pasos solo son necesarios si utiliza la autenticación XML en su implementación.

Nota:

StoreFront admite dos modelos para asignar almacenes a un servicio de autenticación. El método recomendado es una asignación individual entre almacén y servicio de autenticación. En este caso, debe seguir los pasos de esta sección en todos los almacenes y sus respectivos servicios de autenticación.

Compruebe que el modo de revocación de certificados tiene el mismo valor tanto en el almacén como en el servicio de autenticación. Como alternativa, si la configuración de la autenticación es idéntica para todos los almacenes, se pueden configurar varios almacenes para que compartan un único servicio de autenticación.

Los cmdlets de PowerShell del servicio de autenticación no tienen el equivalente de Set-STFStoreFarmConfiguration, por lo que se necesita un estrategia ligeramente diferente con PowerShell. Utilice la misma configuración de la directiva de revocación de certificados descrita en la sección anterior.

  1. Abra PowerShell ISE y seleccione Ejecutar como administrador.

    $SiteID = 1
    $StoreVirtualPath = "/Citrix/Store"
    $AuthVirtualPath = "/Citrix/StoreAuth"
    
  2. Seleccione el servicio de almacén, el servicio de autenticación y el Delivery Controller para que se utilicen en la autenticación XML. Compruebe que el Delivery Controller ya está configurado para el almacén.

    $StoreObject = Get-STFStoreService -SiteId $SiteID -VirtualPath $StoreVirtualPath
    $FarmObject = Get-STFStoreFarm -StoreService $StoreObject -FarmName "CVAD"
    $AuthObject = Get-STFAuthenticationService -SiteID $SiteID -VirtualPath $AuthVirtualPath
    
  3. Modifique directamente la propiedad CertRevocationPolicy del servicio de autenticación.

    $AuthObject.FarmsConfiguration.CertRevocationPolicy = "FullCheck"
    $AuthObject.Save()
    Enable-STFXmlServiceAuthentication -AuthenticationService $AuthObject -Farm $FarmObject
    
  4. Confirme que ha establecido el modo de revocación de certificados correcto.

    $AuthObject = Get-STFAuthenticationService -SiteID 1 -VirtualPath $AuthVirtualPath
    $AuthObject.FarmsConfiguration.CertRevocationPolicy
    

Errores previsibles del Visor de eventos de Windows

Cuando la comprobación CRL está habilitada, se notifican errores en el Visor de eventos de Windows en el servidor de StoreFront.

Para abrir el Visor de eventos:

  • En el servidor de StoreFront, escriba Run.
  • Escriba eventvwr y luego pulse Intro.
  • En Aplicaciones y servicios, busque eventos de Citrix Delivery Services.

Ejemplo de error: El almacén no puede contactar con un Delivery Controller mediante un certificado revocado

No se pudo establecer una conexión SSL: Ocurrió un error durante la autenticación SSL
Criptografía: Acceso denegado.

Este mensaje fue enviado desde Citrix XML Service en la dirección
https://deliverycontrollerTLS.domain.com/scripts/wpnbr.dll.

No se pudo contactar con el servicio Citrix XML Service especificado por lo que ha sido
eliminado temporalmente de la lista de servicios activos.

Ejemplo de error: En Receiver para Web, si el usuario no puede iniciar sesión por un error en la autenticación XML

Se recibió una respuesta inesperada durante el proceso de autenticación.

Citrix.DeliveryServicesClients.Authentication.Exceptions.ExplicitAuthenticationFailure,
Citrix.DeliveryServicesClients.Authentication, Version=3.20.0.0,
Culture=neutral, PublicKeyToken=null

Error general de autenticación

ExplicitResult.State: 5

AuthenticationControllerRequestUrl:
https://storefront.example.com/Citrix/StoreWeb/ExplicitAuth/LoginAttempt

ActionType: LoginAttempt

at
Citrix.Web.AuthControllers.Controllers.ExplicitAuthController.GetExplicitAuthResult(ActionType
type, Dictionary`2 postParams)