Transport Layer Security (TLS)

La configuración de un sitio de XenApp o XenDesktop para que use el protocolo Transport Layer Security (TLS) incluye los siguientes procedimientos:

  • Obtener, instalar y registrar un certificado de servidor en todos los Delivery Controllers y configurar un puerto con el certificado TLS. Para obtener más información, consulte Instalar certificados de servidor TLS en los Controllers.

    Si lo desea, puede cambiar los puertos que Controller utiliza para escuchar el tráfico HTTP y HTTPS.

  • Habilite las conexiones TLS entre los usuarios y los agentes VDA (Virtual Delivery Agent) completando las siguientes tareas:

    Requisitos y consideraciones:

    • La habilitación de conexiones TLS entre los usuarios y los VDA solo es válida para los sitios de XenApp 7.6 y XenDesktop 7.6 y versiones posteriores respaldadas.
    • Configure TLS en los grupos de entrega y en los VDA después de instalar los componentes, crear un sitio, crear catálogos de máquinas y crear grupos de entrega.
    • Para configurar TLS en los grupos de entrega, debe tener permiso para cambiar las reglas de acceso de Controllers; los administradores totales tienen este permiso.
    • Para configurar TLS en los VDA, debe ser un administrador Windows en la máquina donde está instalado el VDA.
    • Si tiene pensado configurar TLS en los VDA que se han actualizado desde versiones más antiguas, desinstale cualquier software de traspaso SSL que haya en esas máquinas antes de actualizarlas.
    • El script de PowerShell configura el protocolo TLS en agentes VDA estáticos, no lo configura en VDA agrupados y aprovisionados por Machine Creation Services o Provisioning Services, en los que la imagen de las máquinas se restablece con cada reinicio.

Advertencia

Para las tareas que impliquen modificar el Registro de Windows, tenga cuidado: si lo modifica de forma incorrecta, pueden producirse problemas graves que pueden hacer que sea necesario instalar nuevamente el sistema operativo. Citrix no puede garantizar que los problemas derivados de la utilización inadecuada del Editor del Registro puedan resolverse. Si utiliza el Editor del Registro, será bajo su propia responsabilidad. Haga una copia de seguridad del Registro antes de modificarlo.

Para obtener información acerca de la habilitación de TLS para la base de datos del sitio, consulte CTX137556.

Nota:

Si TLS y UDT están habilitados en el VDA:

  • Para el acceso directo al VDA, Citrix Receiver utiliza siempre TLS sobre TCP (no UDP y UDT).
  • Para acceder indirectamente al VDA mediante NetScaler Gateway, Citrix Receiver usa el protocolo DTLS sobre UDP para la comunicación con NetScaler Gateway. Para la comunicación entre NetScaler Gateway y el VDA, se utiliza UDP sin DTLS. Se utiliza UDT.

Instalar certificados de servidor TLS en los Controllers

Para HTTPS, XML Service respalda las funciones de TLS mediante el uso de certificados de servidor, pero no de certificados de cliente. Para obtener, instalar y registrar un certificado en un Controller y para configurar un puerto con el certificado TLS:

Si el Controller tiene IIS instalado, siga las instrucciones indicadas en https://technet.microsoft.com/en-us/library/cc771438%28v=ws.10%29.aspx.

Si el Controller no tiene IIS instalado, he aquí un método de configuración del certificado:

  1. Obtenga un certificado de servidor TLS e instálelo en el Controller siguiendo las instrucciones de https://blogs.technet.com/b/pki/archive/2009/08/05/how-to-create-a-web-server-ssl-certificate-manually.aspx. Para obtener información sobre la herramienta certreq, consulte https://technet.microsoft.com/en-us/library/cc736326(WS.10).aspx.

    Si quiere utilizar el script de PowerShell para configurar TLS en los VDA y, a menos que vaya a especificar la huella digital del certificado de SSL, compruebe que el certificado se encuentra en la sección Equipo local > Personal > Certificados, en el almacén de certificados. Si hay más de un certificado en esa ubicación, se usa el primero que se encuentra.

  2. Configure un puerto con el certificado; consulte https://msdn.microsoft.com/en-us/library/ms733791%28v=vs.110%29.aspx.

Si el Controller está instalado en Windows Server 2016 y StoreFront está instalado en Windows Server 2012, es necesario cambiar la configuración en el Controller, para cambiar el orden de los conjuntos de cifrado TLS.

Nota:

Este cambio de configuración no es necesario para Controller ni StoreFront con otras combinaciones de versiones de Windows Server.

El orden en la lista de los conjuntos de cifrado debe incluir el conjunto de cifrado TLS_ECDHE_RSA_WITH_AES_256CBC_SHA384 o TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (o ambos), y estos conjuntos deben preceder cualquier conjunto de cifrado TLS_DHE.

Nota:

Windows Server 2012 no admite estos conjuntos de cifrado GCM: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 o TLS_ECDHE_RSA_WITH_AES_128_GCM _SHA256.

  1. Desde el editor de directivas de grupo de Microsoft, vaya a Configuración del equipo > Plantillas administrativas > Red > Opciones de configuración SSL.
  2. Modifique la directiva “Orden de conjuntos de cifrado SSL”. De manera predeterminada, esta directiva está establecida en “No configurada”. Habilite esta directiva.
  3. Ordene los conjuntos de cifrado; quite aquellos conjuntos que no quiera usar.

Compruebe que ni TLS_ECDHE_RSA_WITH_AES_256CBC_SHA384 ni TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 preceden conjuntos de cifrado TLS_DHE.

En Microsoft MSDN, también puede consultar Prioritizing Schannel Cipher Suites.

Cambiar puertos HTTP o HTTPS

De forma predeterminada, el XML Service en el Controller escucha en los puertos 80 para el tráfico HTTP y 443 para el tráfico HTTPS. Aunque se pueden utilizar otros puertos distintos de los predeterminados, tenga en cuenta los riesgos de seguridad que implica la exposición de un Controller a redes que no son de confianza. Antes que cambiar los valores predeterminados, es preferible implementar un servidor StoreFront independiente.

Para cambiar los puertos HTTP o HTTPS predeterminados que usa el Controller, ejecute el comando siguiente en Studio:

BrokerService.exe -WIPORT <puerto http> -WISSLPORT <puerto https>

<puerto http> es el número de puerto para el tráfico HTTP y <puerto https> es el número de puerto para el tráfico HTTPS.

Nota:

Después de cambiar de un puerto, Studio puede mostrar un mensaje acerca de la actualización y la compatibilidad de licencias. Para resolver el problema, vuelva a registrar las instancias de servicio mediante esta secuencia de cmdlet de PowerShell:

Get-ConfigRegisteredServiceInstance -ServiceType Broker -Binding XML_HTTPS |

Unregister-ConfigRegisteredServiceInstance

Get-BrokerServiceInstance | where Binding -eq “XML_HTTPS” | Register-ConfigServiceInstance

Solo aplicar el tráfico HTTPS

Si quiere que XML Service ignore el tráfico HTTP, cree el siguiente parámetro de Registro en HKLM\Software\Citrix\DesktopServer\ en el Controller y reinicie el Broker Service.

Para ignorar el tráfico HTTP, cree XmlServicesEnableNonSsl y déle el valor 0.

Se puede crear el valor DWORD de Registro correspondiente para ignorar el tráfico HTTPS: DWORD XmlServicesEnableSsl. Compruebe que no está establecido en 0.

Parámetros de TLS en agentes VDA

Un grupo de entrega no puede incluir una mezcla de VDA con TLS configurado y VDA sin TLS configurado. Al configurar TLS para un grupo de entrega, debe haber configurado TLS para todos los VDA en ese grupo de entrega.

Si configura TLS en los VDA, cambiarán los permisos del certificado TLS instalado, lo que da al servicio ICA acceso de lectura a la clave privada del certificado e informa a servicio ICA de lo siguiente:

  • Qué certificado del almacén de certificados hay que usar para TLS.
  • Qué número de puerto TCP hay que usar para las conexiones TLS.

El Firewall de Windows (si está habilitado) debe estar configurado para permitir conexiones entrantes en este puerto TCP. Esta configuración se lleva a cabo cuando se usa el script de PowerShell.

  • Qué versiones del protocolo TLS deben permitirse.

Importante

Citrix recomienda revisar el uso de SSL 3 y volver a configurar las implementaciones para quitar el respaldo a SSL 3 donde corresponda. Consulte CTX200238.

Las versiones respaldadas del protocolo TLS siguen una jerarquía (de menor a mayor): SSL 3.0, TLS 1.0, TLS 1.1 y TLS 1.2. Debe especificar la versión mínima permitida; se permitirán todas las conexiones que usen esa versión del protocolo o una versión más alta.

Por ejemplo, si especifica TLS 1.1 como la versión mínima, se permitirán conexiones con TLS 1.1 y TLS 1.2. Si elige SSL 3.0 como la versión mínima, se permitirán conexiones con todas las versiones respaldadas. Si especifica TLS 1.2 como la versión mínima, solo se permiten conexiones con TLS 1.2.

  • ¿Qué conjuntos de cifrado TLS permitir?

El conjunto de cifrado selecciona el cifrado que se usará para una conexión. Los clientes y los agentes VDA pueden admitir varios grupos diferentes de conjuntos de cifrado. Cuando un cliente (Citrix Receiver o StoreFront) se conecta y envía una lista de los conjuntos de cifrado TLS respaldados, el VDA asigna uno de los conjuntos de cifrado del cliente a uno de los conjuntos de cifrado en su propia lista de conjuntos de cifrado configurados y acepta la conexión. Si no encaja ningún conjunto de cifrado, el VDA rechazará la conexión.

El VDA admite tres grupos de conjuntos de cifrado (también conocidos como modos de conformidad): GOV (Government o Gobierno), COM (Commercial o Comercial) y ALL (Todos). Los conjuntos de cifrado que se aceptan también dependen del modo FIPS de Windows; consulte https://support.microsoft.com/kb/811833 para obtener información sobre el modo FIPS de Windows. La tabla siguiente muestra los conjuntos de cifrado en cada grupo:

Conjunto de cifrado TLS GOV COM Todo GOV COM Todo
Modo FIPS No No No
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 x   x x   x
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 x   x x   x
TLS_RSA_WITH_AES_256_GCM_SHA384 x   x x   x
TLS_RSA_WITH_AES_128_GCM_SHA256 x x x x x x
TLS_RSA_WITH_AES_256_CBC_SHA256 x   x x   x
TLS_RSA_WITH_AES_256_CBC_SHA x   x x   x
TLS_RSA_WITH_AES_128_CBC_SHA   x x   x x
TLS_RSA_WITH_RC4_128_SHA   x x      
TLS_RSA_WITH_RC4_128_MD5   x x      
TLS_RSA_WITH_3DES_EDE_CBC_SHA x   x x   x

Importante

Se necesita un paso adicional si el VDA está en Windows Server 2012 R2, Windows Server 2016, o bien, en Windows 10 Anniversary Edition o una versión posterior respaldada. Esto afecta a las conexiones desde Citrix Receiver para Windows (desde la versión 4.6 hasta la versión 4.9), Citrix Receiver para HTML5 y Citrix Receiver para Chrome. También se incluyen las conexiones a través de NetScaler Gateway.

Este paso también es necesario para todas las conexiones que pasan por NetScaler Gateway, para todas las versiones de VDA, si TLS entre NetScaler Gateway y el VDA está configurado. Eso afecta a todas las versiones de Citrix Receiver.

En el VDA (Windows Server 2016 o Windows 10 Anniversary Edition o versiones posteriores), mediante el Editor de directivas de grupo, vaya a Configuración del equipo > Plantillas administrativas > Red > Opciones de configuración SSL > Orden de conjuntos de cifrado SSL. Seleccione el orden siguiente:

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384_P384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384_P256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256 TLS_RSA_WITH_AES_256_GCM_SHA384 TLS_RSA_WITH_AES_128_GCM_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_RC4_128_SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA

Nota:

Los cuatro primeros elementos también indican una curva elíptica, P384 o P256. Compruebe que la opción “curve25519” no está seleccionada. El modo FIPS no impide el uso de “curve25519”.

Cuando esta configuración de la directiva de grupo esté configurada, el VDA selecciona un conjunto de cifrado solo si aparece en las dos listas: la lista de la directiva de grupo y la lista del modo de conformidad seleccionado (COM, GOV o ALL). El conjunto de cifrado también debe aparecer en la lista que envíe el cliente (Citrix Receiver o StoreFront).

Esta configuración de directiva de grupo también afecta a otras aplicaciones y servicios de TLS en el VDA. Si sus aplicaciones requieren conjuntos de cifrado determinados, deberá agregarlos a la lista de esta directiva de grupo.

Importante

Aunque los cambios de directiva de grupo se muestran cuando se aplican, los cambios de directiva de grupo para la configuración de TLS solo tienen efecto después de reiniciar el sistema operativo. Por lo tanto, para escritorios agrupados, los cambios de directiva de grupo referentes a la configuración de TLS se deben aplicar a la imagen base.

Configurar TLS en un VDA mediante el script de PowerShell

El script Enable-VdaSSL.ps1 habilita o inhabilita la escucha de TLS en un VDA. Este script está disponible en la carpeta Support > Tools > SslSupport de los medios de instalación.

Al habilitar TLS, el script inhabilita todas las reglas de Firewall de Windows para el puerto TCP especificado antes de agregar una nueva regla que permite que el servicio ICA acepte conexiones entrantes en el puerto TCP TLS. También inhabilita las reglas de Firewall de Windows para:

  • Citrix ICA (predeterminado: 1494)
  • Citrix CGP (predeterminado: 2598)
  • Citrix WebSocket (predeterminado: 8008)

La consecuencia es que los usuarios solo pueden conectarse por TLS; no pueden usar ICA/HDX, ICA/HDX con Fiabilidad de la sesión o HDX por WebSocket, sin TLS.

Consulte Puertos de red.

El script contiene las siguientes descripciones de sintaxis, además de ejemplos adicionales; puede usar una herramienta como Notepad++ para consultar esta información.

Importante

Debe indicar el parámetro Enable o Disable, así como el parámetro CertificateThumbPrint. Los demás parámetros son opcionales.

Sintaxis

Enable-VdaSSL {-Enable | -Disable} -CertificateThumbPrint "<thumbprint>"
[–SSLPort <port>] [-SSLMinVersion "<min-ssl-version>"] [-SSLCipherSuite"<suite>"]
Parámetro Descripción
Enable Instala y habilita la escucha de TLS en el VDA. Este parámetro o el parámetro Disable es obligatorio.
Disable Inhabilita la escucha de TLS en el VDA. Este parámetro o el parámetro Enable es obligatorio. Si se especifica este parámetro, ningún otro parámetro es válido.
CertificateThumbPrint “<huella digital>” Huella digital del certificado TLS en el almacén de certificados, entre comillas. El script utiliza la huella digital especificada para seleccionar el certificado a utilizar. Este parámetro es obligatorio; si no lo indica, se selecciona un certificado incorrecto.
–SSLPort <puerto> Puerto TLS. Valor predeterminado: 443
SSLMinVersion “" Versión mínima del protocolo TLS, entre comillas. Valores válidos: “SSL_3.0”, “TLS_1.0” (valor predeterminado), “TLS_1.1” y “TLS_1.2”. Importante: Citrix recomienda que los clientes revisen su uso de SSL 3 y tomen las medidas necesarias para reconfigurar sus implementaciones con el fin de quitar el respaldo para SSL 3 donde corresponda. Consulte CTX200238.
-SSLCipherSuite “<conjunto de cifrado>” Conjunto de cifrado TLS, entre comillas. Valores válidos: “GOV”, “COM” y “ALL” (valor predeterminado).

Ejemplos

El siguiente script instala y habilita el valor de versión del protocolo TLS 1.2. La huella digital (representada como “12345678987654321” en este ejemplo) se utiliza para seleccionar el certificado que se utilizará.

Enable-VdaSSL –Enable -CertificateThumbPrint “12345678987654321”

El siguiente script instala y habilita la escucha de TLS, y especifica el puerto TLS 400, el conjunto de cifrado GOV y una versión de protocolo mínima de TLS 1.2. La huella digital (representada como “12345678987654321” en este ejemplo) se utiliza para seleccionar el certificado que se utilizará.

Enable-VdaSSL – Enable -CertificateThumbPrint “12345678987654321” –SSLPort 400 ‘SSLMinVersion “TLS_1.2” –SSLCipherSuite “GOV”

El siguiente script inhabilita la escucha de TLS en el VDA.

Enable-VdaSSL –Disable

Configurar TLS manualmente en un VDA

Al configurar TLS en un VDA manualmente, se concede acceso genérico de lectura a la clave privada del certificado TLS para el servicio apropiado en cada VDA: NT SERVICE\PorticaService para un VDA de SO de escritorio Windows o NT SERVICE\TermService para un VDA de SO de servidor Windows. En la máquina donde está instalado el VDA:

PASO 1. Abra la consola Microsoft Management Console (MMC): Inicio > Ejecutar > mmc.exe.

PASO 2. Agregue el complemento Certificados en la consola MMC:

  1. Seleccione Archivo > Agregar o quitar complemento.
  2. Seleccione Certificados y haga clic en Agregar.
  3. En “Este complemento administrará siempre certificados de”, elija “Cuenta de equipo” y luego haga clic en “Siguiente”.
  4. En “Seleccione el equipo que desea administrar con este complemento”, elija “Equipo local” y, a continuación, haga clic en “Finalizar”.

PASO 3. En Certificados (Equipo local) > Personal > Certificados, haga clic con el botón secundario en el certificado y seleccione Todas las tareas > Administrar claves privadas.

Paso 4. El editor de la lista de control de acceso muestra “Permisos para claves privadas de (nombre)”, donde (nombre) es el nombre del certificado TLS. Agregue uno de los siguientes servicios y déle acceso de lectura:

  • Para un VDA de SO de escritorio Windows, “PORTICASERVICE”
  • Para un VDA de SO de servidor Windows, “TERMSERVICE”

PASO 5. Haga doble clic en el certificado TLS instalado. En el cuadro de diálogo del certificado, seleccione la ficha Detalles y desplácese a la parte inferior. Haga clic en Huella digital.

PASO 6. Ejecute regedit y vaya a HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd.

  1. Edite la clave de huella digital SSL Thumbprint y copie en el valor binario la huella digital que figura en el certificado TLS. Puede ignorar los elementos desconocidos del diálogo Editar valor binario (por ejemplo, ‘0000’ y los caracteres especiales).
  2. Edite la clave SSLEnabled y cambie el valor DWORD a 1. (Para inhabilitar SSL más adelante, cambie el valor DWORD a 0.)
  3. Si desea cambiar la configuración predeterminada (optativo), use lo siguiente en la misma ruta de Registro:

SSLPort DWORD – número de puerto SSL. Valor predeterminado: 443.

SSLMinVersion DWORD – 1 = SSL 3.0, 2 = TLS 1.0, 3 = TLS 1.1, 4 = TLS 1.2. Valor predeterminado: 2 (TLS 1.0).

SSLCipherSuite DWORD – 1 = GOV, 2 = COM, 3 = ALL. Valor predeterminado: 3 (ALL).

PASO 7. Asegúrese de que el puerto TCP de TLS está abierto en el Firewall de Windows, si no es el predeterminado 443. (Cuando cree la regla de entrada en el Firewall de Windows, compruebe que tenga las entradas “Permitir la conexión” y “Habilitada” están seleccionadas en las propiedades.)

Paso 8. Asegúrese de que no hay otros servicios o aplicaciones (por ejemplo, IIS) que estén usando el puerto TCP de TLS.

PASO 9. Para los VDA para SO de servidor Windows, reinicie la máquina para que los cambios tengan efecto. (No es necesario reiniciar las máquinas que contienen los VDA para SO de escritorio Windows.)

Configurar TLS en grupos de entrega

Lleve a cabo este procedimiento para cada grupo de entrega que contenga VDA configurados para conexiones TLS.

  1. Desde Studio, abra la consola de PowerShell.
  2. Ejecute asnp Citrix.* para cargar los cmdlets de producto Citrix.
  3. Ejecute Get-BrokerAccessPolicyRule -DesktopGroupName ‘<nombre del grupo de entrega>’ | Set-BrokerAccessPolicyRule -HdxSslEnabled $true.
  4. Ejecute Set-BrokerSite –DnsResolutionEnabled $true.

Solucionar problemas

Si se produce un error de conexión, compruebe el registro de eventos del sistema en el VDA.

Cuando se usa Citrix Receiver para Windows, si recibe un error de conexión (por ejemplo, 1030) que indica un error TLS, inhabilite Desktop Viewer y, a continuación, intente conectarse de nuevo. Aunque la conexión fallará, podrá obtener una explicación del problema de TLS subyacente. Por ejemplo, que especificó una plantilla incorrecta al solicitar un certificado de la entidad de certificación.)

Comunicación entre Controller y VDA

La comunicación entre el Controller y el VDA está protegida con la protección de mensajes Windows Communication Framework (WCF). No se necesita la protección adicional de transporte mediante el protocolo TLS. La configuración de WCF usa Kerberos para la autenticación mutua entre el Controller y el VDA. Para el cifrado, se usa AES en el modo CBC con una clave de 256 bits. Para la integridad de los mensajes, se usa SHA-1.

Según Microsoft, los Protocolos de seguridad que utiliza WCF cumplen los estándares de OASIS (Organization for the Advancement of Structured Information Standards), incluidos los WS-SecurityPolicy 1.2. Además, Microsoft afirma que WCF admite todos los conjuntos de algoritmos que constan en Security Policy 1.2.

La comunicación entre el Controller y el VDA usa el conjunto de algoritmos basic256, cuyos algoritmos son como se ha señalado anteriormente.

TLS y la redirección de vídeos HTML5

Puede usar la redirección de vídeo HTML5 para redirigir los sitios Web HTTPS. El JavaScript insertado en esos sitios Web debe establecer una conexión TLS al servicio Citrix HDX HTML5 Video Redirection Service que se ejecuta en el VDA. Para conseguirlo, se colocan dos certificados personalizados en el almacén de certificados presente en el VDA.

La directiva de redirección de vídeo HTML5 está inhabilitada de forma predeterminada.

Para obtener más información sobre la redirección de vídeos HTML5, consulte Configuraciones de directiva de Multimedia.

Nota:

Si no tiene intención de utilizar la redirección de vídeo HTML5, le recomendamos eliminar los dos certificados del almacén de certificados del equipo local.

Esos certificados son:

  • Para la CA (raíz): Citrix XenApp/XenDesktop HDX In-Product CA (C = US; S = Florida; L = Fort Lauderdale; O = Citrix Systems, Inc.; OU = XenApp/XenDesktop Engineering; CN = Citrix XenApp/XenDesktop HDX In-Product CA) Ubicación: Certificados (Equipo local) > Entidades de certificación raíz de confianza > Certificados.
  • Para la entidad final (hoja): Citrix XenApp/XenDesktop HDX Service (C = US; S = Florida; L = Fort Lauderdale; O = Citrix Systems, Inc.; OU = XenApp/XenDesktop Engineering; CN = Citrix XenApp/XenDesktop HDX Service) Ubicación: Certificados (Equipo local) > Personal > Certificados.

Recomendamos configurar el servicio Citrix HDX HTML5 Video Redirection Service para que no se inicie automáticamente. La detención de este servicio también elimina los certificados.