Citrix Virtual Apps and Desktops

Abilitare TLS sui Delivery Controller

Per impostazione predefinita, sia HTTP che HTTPS sono abilitati. HTTPS utilizza un certificato autofirmato che impiega l’FQDN del server come nome comune, il quale non è considerato attendibile da StoreFront™ o dai browser web.

Per abilitare TLS su un Delivery Controller™, è necessario:

Richiesta e installazione di un certificato

Per utilizzare TLS, è necessario installare un certificato il cui Nome Comune (Common Name) o Nome Alternativo del Soggetto (Subject Alternative Name) corrisponda all’FQDN del server. Se si utilizza un bilanciatore di carico davanti ai Delivery Controller, includere sia l’FQDN del server che quello del bilanciatore di carico come Nomi Alternativi del Soggetto. Per maggiori informazioni, vedere Certificati. Affinché StoreFront si connetta al Delivery Controller, è necessario utilizzare un algoritmo di firma digitale RSA. StoreFront non supporta i certificati che utilizzano l’algoritmo ECDSA.

Configurazione della porta di ascolto SSL/TLS

Se il componente IIS di Windows è installato sullo stesso server, come parte di Web Studio e Director, è possibile configurare TLS utilizzando IIS. Per maggiori informazioni, vedere Abilitare TLS su Web Studio e Director. In caso contrario, per configurare il certificato utilizzando PowerShell:

  1. Per verificare se è presente un certificato associato, aprire un prompt dei comandi ed eseguire netsh http show sslcert:

    netsh http show sslcert
    <!--NeedCopy-->
    
  2. Se esiste un’associazione, eliminarla.

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

    Sostituire 0.0.0.0:443 con un indirizzo IP e una porta specifici, se ne era stato specificato uno nell’associazione esistente.

  3. Trovare l’identificazione personale (thumbprint) del certificato installato in precedenza. Per visualizzare l’identificazione personale, aprire Gestisci certificati computer, individuare il certificato, aprirlo e andare alla scheda Dettagli.

    Screenshot of certificate properties showing thumbprint

    In alternativa, è possibile utilizzare PowerShell. Ad esempio, lo script seguente cerca un certificato il cui nome comune corrisponde al nome host del server e stampa l’identificazione personale:

    $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-->
    

    Se il nome comune del certificato non corrisponde ai nomi host, l’operazione fallirà. Se sono presenti più certificati per il nome host, verranno restituiti più identificazioni personali concatenate e sarà necessario scegliere l’identificazione personale appropriata.

    L’esempio seguente cerca un certificato per nome descrittivo:

    $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-->
    

    Se sono presenti più certificati con il nome descrittivo specificato, verranno restituiti più identificazioni personali concatenate e sarà necessario scegliere l’identificazione personale appropriata.

  4. Per associare il certificato alla porta, utilizzare il comando netsh http add sslcert:

    netsh http add sslcert ipport=[IP address]:443 certhash=[certificate hash] appid=[application GUID] disablelegacytls=enable
    <!--NeedCopy-->
    
    • ipport: L’indirizzo IP e la porta. L’utilizzo di 0.0.0.0:443 applica questa impostazione a tutti gli indirizzi IP. È possibile invece specificare un indirizzo IP specifico.

    • certhash: L’identificazione personale (thumbprint) del certificato identificato nel passaggio precedente.
    • appid: Il GUID del servizio Citrix Broker.

      Nota:

      Quando si rinnova un certificato o si esegue un nuovo binding, utilizzare l’appid specifico associato al servizio Broker anziché un GUID arbitrario.

      Per trovare l’appid corretto per il servizio Citrix Broker:

      1. Aprire una finestra del prompt dei comandi di PowerShell come amministratore ed eseguire il comando seguente:

         Get-WmiObject -Class Win32_Product | Select-String -Pattern "broker"
         <!--NeedCopy-->
        
      2. Individuare l’IdentifyingNumber (GUID) per il servizio Citrix Broker nell’output (ad esempio, {D333C884-187F-447C-8C67-463F33989C8F}). Utilizzare questo GUID per il parametro appid.

    • disablelegacytls=enable: Disabilita le versioni legacy di TLS. Questo parametro è disponibile su Windows 2022 e versioni successive. Su Windows 2022 disabilita TLS 1.0 e 1.1. Su Windows 2025 questo non è necessario poiché TLS 1.0 e 1.1 sono disabilitati per impostazione predefinita.

    Ad esempio, eseguire il comando seguente per associare il certificato con identificazione personale bc96f958848639fd101a793b87915d5f2829b0b6 alla porta 443 su tutti gli indirizzi IP:

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

Una volta abilitato HTTPS, è necessario configurare tutte le distribuzioni StoreFront e i Netscaler Gateway per utilizzare HTTPS anziché HTTP per connettersi al Delivery Controller.

Configurare l’API OData del servizio Monitor per HTTPS

Il servizio di monitoraggio fornisce API OData v3 e v4 per consentire alle applicazioni Citrix® e di terze parti di interrogare i dati. Director si connette al servizio di monitoraggio utilizzando l’API OData V3. Per configurare le API OData del monitor per HTTPS, completare i passaggi seguenti:

  1. Eseguire il seguente 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. Aprire il file C:\Program Files\Citrix\Monitor\Service\Citrix.Monitor.exe.Config con un editor di testo. Trovare l’elemento <add key="owin:baseAddress" value="http://localhost/citrix/monitor/odata/v4" /> e modificarlo in <add key="owin:baseAddress" value="https://localhost/citrix/monitor/odata/v4" />.

Configurare le suite di cifratura

L’elenco dell’ordine delle suite di cifratura deve includere le suite di cifratura TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 o TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (o entrambe); e queste suite di cifratura devono precedere qualsiasi suite di cifratura TLS_DHE_.

  1. Utilizzando l’Editor Criteri di gruppo di Microsoft, navigare in Configurazione computer > Modelli amministrativi > Rete > Impostazioni di configurazione SSL.
  2. Modificare il criterio “Ordine suite di cifratura SSL”. Per impostazione predefinita, questo criterio è impostato su “Non configurato”. Impostare questo criterio su Abilitato.
  3. Disporre le suite nell’ordine corretto; rimuovere le suite di cifratura che non si desidera utilizzare.

Assicurarsi che TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 o TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 preceda qualsiasi suite di cifratura TLS_DHE_.

Su Microsoft Learn, vedere anche Configurazione dell’ordine delle suite di cifratura TLS.

Imporre solo il traffico HTTPS

Si consiglia di configurare il servizio XML in modo che ignori il traffico HTTP.

  1. Eseguire regedit
  2. Aprire HKLM\Software\Citrix\DesktopServer\
  3. Creare un nuovo valore DWORD con nome XmlServicesEnableNonSsl e impostarlo su 0.
  4. Riavviare il servizio Broker.

Esiste un valore DWORD del Registro di sistema corrispondente, XmlServicesEnableSsl, che è possibile creare per ignorare il traffico HTTPS. Assicurarsi che non sia impostato su 0.

Modificare le porte HTTP o HTTPS

Per impostazione predefinita, il servizio XML sul Controller è in ascolto sulla porta 80 per il traffico HTTP e sulla porta 443 per il traffico HTTPS. Sebbene sia possibile utilizzare porte non predefinite, è necessario essere consapevoli dei rischi per la sicurezza derivanti dall’esposizione di un Controller a reti non attendibili. La distribuzione di un server StoreFront autonomo è preferibile alla modifica delle impostazioni predefinite.

Per modificare le porte HTTP o HTTPS predefinite utilizzate dal Controller, eseguire il comando seguente da Studio:

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

dove <http-port> è il numero di porta per il traffico HTTP e <https-port> è il numero di porta per il traffico HTTPS.

Nota:

Dopo aver modificato una porta, Studio potrebbe visualizzare un messaggio sulla compatibilità della licenza e sull’aggiornamento. Per risolvere il problema, registrare nuovamente le istanze del servizio utilizzando la seguente sequenza di cmdlet PowerShell:

Get-ConfigRegisteredServiceInstance -ServiceType Broker -Binding XML_HTTPS |
Unregister-ConfigRegisteredServiceInstance
Get-BrokerServiceInstance | where Binding -eq "XML_HTTPS" |
Register-ConfigServiceInstance
<!--NeedCopy-->
Abilitare TLS sui Delivery Controller