Product Documentation

Transport Layer Security (TLS)

Sep 02, 2016
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:

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>

es el número de puerto para el tráfico HTTP y 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, establezca el siguiente valor de Registro en HKLM\Software\Citrix\DesktopServer\ en el Controller y reinicie el Broker Service.

Para ignorar el tráfico HTTP, establezca el valor de XmlServicesEnableNonSsl en 0.

Existe un valor de Registro correspondiente para ignorar el tráfico HTTPS: XmlServicesEnableSsl. Compruebe que no está establecido en 0.

Acerca de los parámetros de TLS en los VDA

Al configurar TLS en los VDA, esto cambia 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.

Important

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.

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é cifrados TLS debe permitirse.

    Un conjunto de cifrado es una lista de cifrados TLS comunes. Cuando un cliente se conecta y envía una lista de cifrados TLS respaldados, el VDA asigna uno de los cifrados del cliente a uno de los cifrados de su conjunto de cifrados configurado y acepta la conexión. Si el cliente envía un cifrado que no está en el conjunto de cifrado del VDA, el VDA rechazará la conexión.

    Se respaldan tres conjuntos de cifrado: GOV (Government), COM (Commercial) y ALL. Los cifrados incluidos en esos conjuntos de cifrado dependen del modo FIPS de Windows; consulte http://support.microsoft.com/kb/811833 para obtener información acerca del modo FIPS de Windows. La siguiente tabla enumera los cifrados de cada conjunto de cifrado respaldado.
    Conjunto de cifrado TLSGOVCOMTodoGOVCOMTodo
    Modo FIPSOffOffOffOnOnOn
    RSA_KEYXxxxxxx
    RSA_SIGNxxxxxx
    3DESx xx x
    RC4 xx   
    MD5xxx   
    SHAxxxxxx
    SHA_256xxxxxx
    SHA_384xxxxxx
    SHA_512xxxxxx
    AESxxxxxx

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.

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"<suite>"] [-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 SSLv3 y sigan los pasos necesarios para reconfigurar sus implementaciones con el fin de quitar el respaldo para SSLv3 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. (Al crear la regla de entrada en el Firewall de Windows, asegúrese de que sus propiedades tienen seleccionadas las entradas "Permitir la conexión" y "Habilitada").
  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.