Product Documentation

Transport Layer Security (TLS)

Feb 14, 2017
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 SSL. Para obtener más información, consulte Instalación de 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.
En el caso de tareas que requieren trabajar con el Registro de Windows:
Precaución: Si modifica el Registro de forma incorrecta, podrían generarse problemas graves que pueden provocar la reinstalación del 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. Asegúrese de hacer 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.

Instale 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 SSL:

Si IIS está instalado en el Controller, siga los pasos descritos en https://technet.microsoft.com/es-es/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 SSL e instálelo en el Controller como se describe en http://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 http://technet.microsoft.com/en-us/library/cc736326(WS.10).aspx.

    Si desea 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, asegúrese de 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 http://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 y 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_256_CBC_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 los conjuntos de cifrado GCM TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ni TLS_ECDHE_RSA_WITH_AES_128_GCM _SHA256.

Referencia: El artículo "Prioritizing Schannel Cipher Suites" en Microsoft MSDN

  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”. Establezca esta directiva como Habilitada.
  3. Ordene los conjuntos de cifrado; quite aquellos conjuntos que no quiera usar.

Compruebe que ni TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 ni TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 preceden conjuntos de cifrado TLS_DHE_.

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 usados por 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 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 SSL instalado, lo que da al servicio ICA acceso de lectura a la clave privada del certificado e informa al ICA Service 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 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 http://support.microsoft.com/kb/811833 para obtener más información sobre el modo FIPS de Windows. En la siguiente tabla, aparecen los conjuntos de cifrado de cada grupo:

Conjunto de cifrado TLS

GOV

COM

Todo

GOV

COM

Todo

Modo FIPS

Off

Off

Off

On

On

On

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 un servidor Windows Server 2016 o una versión posterior, o bien en Windows 10 Anniversary Edition o una versión posterior.  Lo que afecta a las conexiones desde Citrix Receiver para Windows 4.6.

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 este parámetro de la directiva de grupo esté configurado, el VDA seleccionará 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.

Configuración de TLS en un agente 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)

Como resultado, los usuarios solo pueden conectarse sobre TLS; no pueden usar ICA, CGP o WebSocket estándar para conectar.

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

Debe especificar el parámetro –Enable o –Disable; todos los demás parámetros son optativos.

Sintaxis

Enable-VdaSSL {-Enable | -Disable} [–SSLPort <puerto>] [-SSLMinVersion "<versión mínima de SSL>"] [-SSLCipherSuite"<conjunto de cifrados>"] [-CertificateThumbPrint "<huella digital>"]

ParámetroDescripción
-EnableInstala y habilita la escucha de TLS en el VDA. Este parámetro, o el parámetro -Disable, es obligatorio.
-DisableInhabilita 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.
–SSLPort <puerto>Puerto TLS. Valor predeterminado: 443
-SSLMinVersion "<versión mínima de SSL>"

Versión mínima del protocolo TLS, entre comillas. Valores válidos: "SSL_3.0", "TLS_1.0", "TLS_1.1" y "TLS_1.2". Valor predeterminado: "TLS_1.0"

Importante: Citrix recomienda que los clientes revisen su uso de SSL versión 3 y realicen los pasos necesarios para reconfigurar sus implementaciones con el fin de quitar el respaldo para SSL versión 3 donde corresponda. Consulte CTX200238.

-SSLCipherSuite "<conjunto de cifrado>"Conjunto de cifrado TLS, entre comillas. Valores válidos: "GOV", "COM" y "ALL". Valor predeterminado: "ALL"
-CertificateThumbPrint "<huella digital>"Huella digital del certificado SSL en el almacén de certificados, entre comillas. Este parámetro se utiliza generalmente cuando el almacén de certificados tiene varios certificados; el script usa la huella digital para seleccionar el certificado que desea usar. Valor predeterminado: el primer certificado disponible que se encuentre en el almacén de certificados bajo Equipo local > Personal > Certificados.

Ejemplos

El siguiente script instala y habilita el valor de versión del protocolo TLS 1.2.
Enable-VdaSSL –Enable
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 SSL mínima de TLS 1.2.
Enable-VdaSSL – Enable –SSLPort 400 'SSLMinVersion "TLS_1.2"  –SSLCipherSuite "GOV"
El siguiente script inhabilita la escucha de TLS en el VDA.
Enable-VdaSSL –Disable

Configuración manual de TLS en un agente 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:
  1. Abra la consola Microsoft Management Console (MMC): Inicio > Ejecutar > mmc.exe.
  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.
  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.
  4. El editor de lista de control de acceso muestra "Permisos de claves privadas de (nombre)", donde (nombre) es el nombre del certificado SSL. 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"
  5. Haga doble clic en el certificado SSL 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.
  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 SSL. 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).
  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.)
  8. Asegúrese de que no hay otros servicios o aplicaciones (por ejemplo, IIS) que estén usando el puerto TCP de TLS.
  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.)

Configuración de TLS en los 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.

    donde <nombre del grupo de entrega> es el nombre del grupo de entrega que contiene los VDA.

  4. Ejecute Set-BrokerSite –DnsResolutionEnabled $true.

Solución de problemas

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

Cuando se usa Receiver para Windows, si recibe un error de conexión (como el error 1030) que indica un error TLS, inhabilite Desktop Viewer y, a continuación, intente conectar de nuevo; aunque la conexión fallará otra vez, es posible que esta vez obtenga una explicación del problema de TLS subyacente (por ejemplo, si 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.

Redirección de vídeos HTML5 y TLS

La redirección de vídeos HTML5 incluye respaldo para el contenido de vídeo a través de TLS (HTTPS).  Para conseguirlo, los certificados personalizados se colocan en el almacén de certificados del equipo en el VDA.

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

Si no va a utilizar la redirección de vídeos HTML5 con contenido de vídeo que se envía a través de TLS, Citrix recomienda eliminar los dos certificados del almacén de certificados raíz de confianza en el VDA.  Esos certificados contienen el texto: "Issued to Citrix HDX" o "Issued by Citrix HDX" y "Issued to 127.0.0.1" o "Issued by Citrix HDX".

Citrix recomienda eliminar los archivos libeay32.dll y ssleay32.dll de la carpeta de instalación de la Redirección de vídeo de HTML5. Se recomienda hacer esto aunque no se vaya a utilizar contenido de vídeo HTML5.

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