StoreFront

Comprobación de la lista de revocación de certificados (CRL)

Introducción

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

  • crees que la clave privada se ha visto comprometida
  • la CA se ha visto comprometida
  • la afiliación ha cambiado
  • el certificado ha sido reemplazado

Nota:

Este tema solo es relevante cuando se utilizan conexiones HTTPS entre StoreFront y los controladores de entrega de Citrix Virtual Apps and Desktops. Las conexiones HTTP a los controladores de entrega no requieren un certificado, por lo que la configuración de -CertRevocationPolicy para el Almacén, descrita aquí, no tiene efecto.

StoreFront admite la comprobación de revocación de certificados mediante extensiones de certificado de punto de distribución de CRL (CDP) y listas de revocación de certificados (CRL) instaladas localmente. StoreFront solo admite CRL completas: no se admiten CRL delta.

Extensiones de puntos de distribución de CRL (CDP)

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

Captura de pantalla de un certificado con extensiones de punto de extensión CLR

Intervalo de publicación de CRL

Para que StoreFront detecte los certificados revocados en el controlador de entrega más rápidamente, reduce el intervalo de publicación de CRL en la CA. Modifica las propiedades de la extensión de puntos de distribución de CLR para establecer un valor de intervalo de publicación de CLR más bajo y adecuado para tu infraestructura de clave pública.

Propiedades del certificado revocado

Almacenamiento en caché de CRL del cliente

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

Acceso de StoreFront a las 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 CRL. Considera cuidadosamente cómo StoreFront se comunica con el servidor web o la autoridad de certificación (CA) que publica la CRL, y cómo StoreFront recibe las actualizaciones de la CRL.

CA empresariales internas y certificados privados en controladores de entrega

Para usar CA y certificados privados, StoreFront requiere una CA empresarial configurada correctamente y una CRL publicada a la que pueda acceder dentro de tu organización y red interna. Consulta la documentación de Microsoft para obtener información sobre cómo configurar la CA empresarial para publicar extensiones CDP. Es posible que sea necesario volver a emitir cualquier certificado en tus controladores de entrega que existiera antes de que la CA se configurara para incluir extensiones CDP.

Es habitual que los servidores de StoreFront y Citrix Virtual Apps and Desktops se encuentren en redes privadas aisladas sin acceso a Internet. En este escenario, 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 CA públicas. StoreFront debe poder contactar 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 utilizando una URL CDP después de que se haya revocado un certificado público, entonces StoreFront no podrá realizar la comprobación de la CRL.

Ver la política de revocación de certificados

Para ver la configuración de la política utilizando el SDK de PowerShell, ejecuta el cmdlet `Get-STFStoreFarmConfiguration` y, en el objeto resultante, consulta la propiedad `CertRevocationPolicy`. Por ejemplo:

$store=Get-STFStoreService -VirtualPath '/Citrix/Store'
(Get-STFStoreFarmConfiguration -StoreService $store).CertRevocationPolicy
<!--NeedCopy-->

Configurar la política de revocación de certificados

Para establecer la política de revocación de certificados para un almacén utilizando el SDK de PowerShell, ejecuta el cmdlet `Set-STFStoreFarmConfiguration` con el parámetro `-CertRevocationPolicy`.

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

Configuración Descripción
NoCheck StoreFront no comprueba el estado de revocación del certificado en el controlador de entrega. StoreFront sigue enumerando recursos de los controladores de entrega que utilizan certificados revocados. Esta es la configuración predeterminada.
MustCheck Esta es la opción más segura. StoreFront intenta obtener una CRL contactando las URL a las que se hace referencia en las extensiones CDP del certificado en el controlador de entrega. StoreFront no puede enumerar desde el controlador de entrega si la CRL no está disponible o si el certificado en uso en el controlador de entrega ha sido revocado. La 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 CA pública.
FullCheck StoreFront intenta contactar las URL publicadas en las extensiones CDP del certificado del controlador de entrega. Si StoreFront no puede obtener una copia de la CRL de las URL, aún permite la enumeración de recursos desde el controlador de entrega. Si StoreFront obtiene correctamente la CRL y el certificado del controlador de entrega ha sido revocado, entonces StoreFront no enumera los recursos. La 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 CA pública.
NoNetworkAccess Solo se comprueban las CRL que se han importado localmente en el almacén de certificados de Citrix Delivery Services en el servidor de StoreFront. StoreFront no intenta contactar ninguna de las URL especificadas en las extensiones CDP. Si StoreFront no puede obtener una copia local de la CRL, aún permite la enumeración de recursos desde el controlador de entrega. Si StoreFront obtiene correctamente una copia local de la CRL del almacén de certificados de Citrix Delivery Services y el certificado del controlador de entrega ha sido revocado, entonces StoreFront no enumera los recursos.

Por ejemplo:

$SiteID = 1
$StoreVirtualPath = "/Citrix/Store"
$StoreObject = Get-STFStoreService -VirtualPath $StoreVirtualPath
Set-STFStoreFarmConfiguration -StoreService $StoreObject -CertRevocationPolicy "MustCheck"
<!--NeedCopy-->

Si tienes varios almacenes, repite este procedimiento en todos ellos. -CertRevocationPolicy es una configuración a nivel de almacén que afecta a todos los controladores de entrega configurados para el almacén especificado en $StoreVirtualPath.

Uso de CRL importadas localmente en el servidor de StoreFront

El uso de CRL importadas localmente es compatible, pero Citrix® no lo recomienda porque:

  • Son difíciles de gestionar y actualizar en implementaciones empresariales grandes, donde pueden estar involucrados varios grupos de servidores de StoreFront.
  • Actualizar manualmente 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.

Se pueden usar CRL instaladas o actualizadas localmente si -CertRevocationPolicy se establece en “NoNetworkAccess” y tienes los medios para distribuir la CRL de manera eficiente a todos los servidores de StoreFront.

Para usar CLR importadas localmente

  1. Copia la CRL al escritorio del servidor de StoreFront. Si el servidor de StoreFront forma parte de un grupo de servidores, cópiala a todos los servidores de StoreFront del grupo.

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

  3. Haz clic derecho y selecciona Todas las tareas > Importar, luego busca el archivo .CRL y elige 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. Inicia sesión en StoreFront y copia el archivo .CRL al escritorio del usuario actual.

  2. Abre PowerShell ISE y selecciona Ejecutar como administrador.

  3. Ejecuta lo siguiente:

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

    Si tiene éxito, se devuelve lo siguiente:

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

Puedes usar este comando como ejemplo para distribuir la CRL a todos los servidores de StoreFront en tu implementación automáticamente mediante scripts.

Autenticación XML mediante controladores de entrega

Puedes configurar StoreFront para delegar la autenticación de usuarios a los controladores de entrega de Citrix Virtual Apps and Desktops. Se impide que los usuarios inicien sesión en StoreFront si el certificado del controlador de entrega ha sido revocado. Este comportamiento es deseable, ya que los usuarios de Active Directory no deberían poder iniciar sesión en StoreFront si el certificado del controlador de entrega de Citrix Virtual Apps and Desktops, responsable de autenticarlos, ha sido revocado.

Para delegar la autenticación de usuarios a los controladores de entrega

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

  2. Configura el controlador de entrega para usar HTTPS, siguiendo el procedimiento descrito en Autenticación basada en servicio XML.

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

Estos pasos solo son necesarios si utilizas la autenticación XML en tu implementación.

Nota:

StoreFront admite dos modelos para asignar almacenes a un servicio de autenticación. El enfoque recomendado es una asignación uno a uno entre el almacén y el Servicio de autenticación. En este caso, debes realizar los pasos de esta sección en todos los almacenes y sus respectivos servicios de autenticación.

Asegúrate de que el modo de revocación de certificados esté establecido en el mismo valor tanto para el almacén como para el servicio de autenticación. Alternativamente, si la configuración de autenticación es idéntica para todos los almacenes, se pueden configurar varios almacenes para compartir un único servicio de autenticación.

Los cmdlets de PowerShell del servicio de autenticación no tienen un equivalente de Set-STFStoreFarmConfiguration, por lo que se requiere un enfoque de PowerShell ligeramente diferente. Utiliza la misma configuración de política de revocación de certificados descrita en la sección anterior.

  1. Abre PowerShell ISE y selecciona Ejecutar como administrador.

    $SiteID = 1
    $StoreVirtualPath = "/Citrix/Store"
    $AuthVirtualPath = "/Citrix/StoreAuth"
    <!--NeedCopy-->
    
  2. Selecciona el servicio de almacén, el servicio de autenticación y el controlador de entrega™ que se utilizarán para la autenticación XML. Asegúrate de que el controlador de entrega 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
    <!--NeedCopy-->
    
  3. Modifica directamente la propiedad CertRevocationPolicy del servicio de autenticación.

    $AuthObject.FarmsConfiguration.CertRevocationPolicy = "FullCheck"
    $AuthObject.Save()
    Enable-STFXmlServiceAuthentication -AuthenticationService $AuthObject -Farm $FarmObject
    <!--NeedCopy-->
    
  4. Confirma que has establecido el modo de revocación de certificados correcto.

    $AuthObject = Get-STFAuthenticationService -SiteID 1 -VirtualPath $AuthVirtualPath
    $AuthObject.FarmsConfiguration.CertRevocationPolicy
    <!--NeedCopy-->
    

Errores esperados en el Visor de eventos de Windows

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

Para abrir el Visor de eventos:

  • En el servidor de StoreFront, escribe Ejecutar.
  • Escribe eventvwr y luego presiona Intro.
  • En Aplicaciones y servicios, busca los eventos de Citrix Delivery Services.

Ejemplo de error: El almacén no puede contactar con un controlador de entrega con un certificado revocado

An SSL connection could not be established: An error occurred during SSL crytography: Access is denied.

This message was reported from the Citrix XML Service at address https://deliverycontrollerTLS.domain.com/scripts/wpnbr.dll.

The specified Citrix XML Service could not be contacted and has been temporarily removed from the list of active services.
<!--NeedCopy-->

Ejemplo de error: Desde Receiver para Web si el usuario no puede iniciar sesión debido a un fallo en la autenticación XML

An unexpected response was received during the authentication process.

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

General Authentication Failure

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