Citrix Virtual Apps and Desktops

Habilitar TLS en los controladores de entrega

De forma predeterminada, tanto HTTP como HTTPS están habilitados. HTTPS usa un certificado autofirmado con el FQDN del servidor como nombre común, en el cual no confían StoreFront ni los exploradores web.

Para habilitar TLS en un Delivery Controller, debe hacer lo siguiente:

Solicitar e instalar un certificado

Para usar TLS, debe instalar un certificado cuyo nombre común o nombre alternativo del sujeto coincida con el FQDN del servidor. Si usa un equilibrador de carga delante de los Delivery Controllers, incluya los FQDN del servidor y del equilibrador de carga como nombres alternativos del sujeto. Para obtener más información, consulte Certificados. Para que StoreFront se conecte al Delivery Controller, debe usar un algoritmo de firma digital RSA. StoreFront no admite certificados que usen el algoritmo ECDSA.

Configurar el puerto de escucha SSL/TLS

Si el componente IIS de Windows está instalado en el mismo servidor que se instala como parte de Web Studio y Director, puede configurar TLS mediante IIS. Para obtener más información, consulte Habilitar TLS en Web Studio y Director. De lo contrario, para configurar el certificado mediante PowerShell:

  1. Para comprobar si hay un certificado vinculado, abra un símbolo del sistema y ejecute netsh http show sslcert:

      netsh http show sslcert
    <!--NeedCopy-->
    
  2. Si existe un vínculo, elimínelo.

      netsh http delete sslcert ipport=0.0.0.0:443
    <!--NeedCopy-->
    

    Sustituya 0.0.0.0:443 por una dirección IP y un puerto específicos si había uno especificado en el enlace existente.

  3. Busque la huella digital del certificado que instaló anteriormente. Para ver la huella digital, abra Administrar certificados de equipo, busque el certificado, ábralo y vaya a la ficha Detalles.

    Captura de pantalla de las propiedades del certificado que muestra la huella digital

    Como alternativa, puede usar PowerShell. Por ejemplo, el siguiente script busca un certificado cuyo nombre común coincida con el nombre de host del servidor e imprime la miniatura:

      $HostName = ([System.Net.Dns]::GetHostByName(($env:computerName))).Hostname
    $Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match ("CN=" + $HostName)}).Thumbprint -join ';'
    Write-Host -Object "Certificate Thumbprint for $($HostName): $($Thumbprint)" -Foreground Yellow
    <!--NeedCopy-->
    

    Si el nombre común del certificado no coincide con los nombres de host, el proceso fallará. Si hay varios certificados para el nombre de host, se devuelven varias huellas digitales concatenadas entre sí y deberá elegir la huella digital pertinente.

    En el siguiente ejemplo, se busca un certificado por nombre descriptivo:

      $friendlyName = "My certificate name"
    $Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.FriendlyName -eq $friendlyNam}).Thumbprint -join ';'
    Write-Host -Object "Certificate Thumbprint for $friendlyName: $($Thumbprint)" -Foreground Yellow
    <!--NeedCopy-->
    

    Si hay varios certificados con el nombre descriptivo especificado, se devuelven varias huellas digitales concatenadas entre sí y deberá elegir la huella digital pertinente.

  4. Para vincular el certificado al puerto, use el comando netsh http add sslcert:

      netsh http add sslcert ipport=[IP address]:443 certhash=[certificate hash] appid=[application GUID] disablelegacytls=enable
    <!--NeedCopy-->
    
    • ipport especifica la dirección IP y el puerto. El uso de 0.0.0.0:443 aplica esto a todas las direcciones IP. En su lugar, puede especificar una dirección IP específica.

    • appid: Un GUID arbitrario que sirve para identificar la aplicación que agregó el vínculo. Puede usar cualquier GUID válido, como, por ejemplo, {91fe7386-e0c2-471b-a252-1e0a805febac}.

    • disabledlegacytls=enable: Inhabilita las versiones antiguas de TLS. Este parámetro está disponible en Windows 2022 y versiones posteriores. Windows 2022 inhabilita TLS 1.0 y 1.1. En Windows 2025 esto no es necesario, ya que TLS 1.0 y 1.1 están inhabilitados de forma predeterminada.

    Por ejemplo, ejecute el siguiente comando para vincular el certificado con la huella digital bc96f958848639fd101a793b87915d5f2829b0b6 al puerto 443 en todas las direcciones IP:

      netsh http add sslcert ipport=0.0.0.0:443 certhash=bc96f958848639fd101a793b87915d5f2829b0b6 appid={91fe7386-e0c2-471b-a252-1e0a805febac} disablelegacytls=enable
    <!--NeedCopy-->
    

Una vez que HTTPS esté habilitado, deberá configurar todas las implementaciones de StoreFront y Netscaler Gateway para usar HTTPS en lugar de HTTP para conectarse al Delivery Controller.

Configurar la API OData de Monitor Service para HTTPS

Monitor Service proporciona la API OData v3 y v4 para permitir que Citrix y aplicaciones de terceros consulten datos. Director se conecta al servicio de supervisión mediante la API OData V3. Para configurar las API de supervisión OData para HTTPS, siga estos pasos:

  1. Ejecute el siguiente PowerShell:

      $serviceGroup = Get-ConfigRegisteredServiceInstance -ServiceType Monitor | Select -First 1 ServiceGroupUid
    Remove-ConfigServiceGroup -ServiceGroupUid $serviceGroup.ServiceGroupUid
    & 'C:\Program Files\Citrix\Monitor\Service\citrix.monitor.exe' -ConfigureFirewall -RequireODataTls OdataPort 443 -RequireODataSdkTls OdataSdkPort 443
    get-MonitorServiceInstance | register-ConfigServiceInstance
    Get-ConfigRegisteredServiceInstance -ServiceType Config | Reset-MonitorServiceGroupMembership
    <!--NeedCopy-->
    
  2. Abra el archivo C:\Archivos de programa\Citrix\Monitor\Service\Citrix.Monitor.exe.Config con un editor de texto. Busque el elemento &lt;add key="owin:baseAddress" value="http://localhost/citrix/monitor/odata/v4" /&gt; y cámbielo a &lt;add key="owin:baseAddress" value="https://localhost/citrix/monitor/odata/v4" /&gt;.

Configurar conjuntos de cifrado

La lista ordenada de conjuntos de cifrado debe incluir los conjuntos TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 o TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (o ambas); y estos conjuntos de cifrado deben preceder a cualquier conjunto de cifrado TLS_DHE_.

  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.

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 o TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 deben preceder a cualquier conjunto de cifrado TLS_DHE_.

En Microsoft Learn, consulte también Configuración del orden del conjunto de cifrado TLS.

Solo aplicar el tráfico HTTPS

Se recomienda configurar el servicio XML para ignorar el tráfico HTTP.

  1. Ejecute regedit
  2. Abra HKLM\Software\Citrix\DesktopServer\
  3. Cree un nuevo valor DWORD con el nombre XmlServicesEnableNonSsl y establézcalo en 0.
  4. Reinicie el servicio de broker.

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

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 de StoreFront independiente.

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

  BrokerService.exe -StoreFrontPort <http-port> -StoreFrontTlsPort <https-port>
<!--NeedCopy-->

donde &lt;http-port&gt; es el número de puerto para el tráfico HTTP y &lt;https-port&gt; 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
<!--NeedCopy-->
Habilitar TLS en los controladores de entrega