Citrix Virtual Apps and Desktops

TLS auf Delivery Controllern aktivieren

Standardmäßig sind sowohl HTTP als auch HTTPS aktiviert. HTTPS verwendet ein selbstsigniertes Zertifikat, das den FQDN des Servers als allgemeinen Namen verwendet, welcher von StoreFront™ oder Webbrowsern nicht vertraut wird.

Anfordern und Installieren eines Zertifikats

Um TLS zu verwenden, müssen Sie ein Zertifikat installieren, dessen allgemeiner Name (Common Name) oder alternativer Antragstellernamen (Subject Alternative Name) mit dem FQDN des Servers übereinstimmt. Wenn Sie einen Lastenausgleich vor den Delivery Controllern verwenden, schließen Sie sowohl den FQDN des Servers als auch den des Lastenausgleichs als alternative Antragstellernamen ein. Weitere Informationen finden Sie unter Zertifikate. Damit StoreFront eine Verbindung zum Delivery Controller herstellen kann, müssen Sie einen RSA-Algorithmus für digitale Signaturen verwenden. StoreFront unterstützt keine Zertifikate, die den ECDSA-Algorithmus verwenden.

Konfigurieren des SSL/TLS-Listener-Ports

Wenn die IIS-Windows-Komponente auf demselben Server installiert ist, was als Teil von Web Studio und Director geschieht, können Sie TLS mithilfe von IIS konfigurieren. Weitere Informationen finden Sie unter TLS in Web Studio und Director aktivieren. Andernfalls gehen Sie wie folgt vor, um das Zertifikat mithilfe von PowerShell zu konfigurieren:

  1. Um zu überprüfen, ob ein vorhandenes Zertifikat gebunden ist, öffnen Sie eine Eingabeaufforderung und führen Sie netsh http show sslcert aus:

    netsh http show sslcert
    <!--NeedCopy-->
    
  2. Wenn eine vorhandene Bindung besteht, löschen Sie diese.

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

    Ersetzen Sie 0.0.0.0:443 durch eine spezifische IP-Adresse und einen Port, falls in der vorhandenen Bindung eine solche angegeben war.

  3. Suchen Sie den Fingerabdruck (Thumbprint) des zuvor installierten Zertifikats. Um den Fingerabdruck anzuzeigen, öffnen Sie Computerzertifikate verwalten, navigieren Sie zum Zertifikat, öffnen Sie es und wechseln Sie zur Registerkarte Details.

    Screenshot der Zertifikateigenschaften mit Fingerabdruck

    • Alternativ können Sie PowerShell verwenden. Das folgende Skript sucht beispielsweise nach einem Zertifikat, dessen allgemeiner Name mit dem Hostnamen des Servers übereinstimmt, und gibt den Fingerabdruck aus:
    $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-->
    

    Wenn der allgemeine Name des Zertifikats nicht mit den Hostnamen übereinstimmt, schlägt dies fehl. Wenn mehrere Zertifikate für den Hostnamen vorhanden sind, werden mehrere Fingerabdrücke aneinandergereiht zurückgegeben, und Sie müssen den entsprechenden Fingerabdruck auswählen.

    Das folgende Beispiel sucht nach einem Zertifikat anhand des Anzeigenamens (Friendly Name):

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

    Wenn mehrere Zertifikate mit dem angegebenen Anzeigenamen vorhanden sind, werden mehrere Fingerabdrücke aneinandergereiht zurückgegeben, und Sie müssen den entsprechenden Fingerabdruck auswählen.

  4. Um das Zertifikat an den Port zu binden, verwenden Sie den Befehl netsh http add sslcert:

    netsh http add sslcert ipport=[IP address]:443 certhash=[certificate hash] appid=[application GUID] disablelegacytls=enable
    <!--NeedCopy-->
    
    • ipport: Die IP-Adresse und der Port. Die Verwendung von 0.0.0.0:443 wendet dies auf alle IP-Adressen an. Sie können stattdessen eine spezifische IP-Adresse angeben.
    • certhash: Der Fingerabdruck des Zertifikats, das Sie im vorherigen Schritt identifiziert haben.
    • appid: Die GUID des Citrix Broker Service.

      Hinweis:

      Beim Erneuern oder Neubinden eines Zertifikats verwenden Sie die spezifische appid, die dem Broker Service zugeordnet ist, anstatt einer beliebigen GUID. Um die korrekte appid für den Citrix Broker Service zu finden:

      1. Öffnen Sie ein PowerShell-Befehlsfenster als Administrator und führen Sie den folgenden Befehl aus:
       ```
       Get-WmiObject -Class Win32_Product | Select-String -Pattern "broker"
       <!--NeedCopy--> ```
      
      1. Suchen Sie die IdentifyingNumber (GUID) für den Citrix Broker Service in der Ausgabe (zum Beispiel {D333C884-187F-447C-8C67-463F33989C8F}). Verwenden Sie diese GUID für den Parameter appid.
    • disablelegacytls=enable: Deaktiviert ältere TLS-Versionen. Dieser Parameter ist unter Windows 2022 und höher verfügbar. Unter Windows 2022 deaktiviert er TLS 1.0 und 1.1. Unter Windows 2025 ist dies unnötig, da TLS 1.0 und 1.1 standardmäßig deaktiviert sind.

    Führen Sie beispielsweise den folgenden Befehl aus, um das Zertifikat mit dem Fingerabdruck bc96f958848639fd101a793b87915d5f2829b0b6 an Port 443 auf allen IP-Adressen zu binden:

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

Sobald HTTPS aktiviert ist, konfigurieren Sie alle StoreFront-Bereitstellungen und NetScaler Gateways so, dass sie HTTPS anstelle von HTTP verwenden, um eine Verbindung zum Delivery Controller herzustellen.

  • Monitor Service OData API für HTTPS konfigurieren

Der Überwachungsdienst stellt OData v3- und v4-APIs bereit, damit Citrix®- und Drittanbieteranwendungen Daten abfragen können. Director stellt über die OData API V3 eine Verbindung zum Überwachungsdienst her. Führen Sie die folgenden Schritte aus, um die Monitor OData APIs für HTTPS zu konfigurieren:

  1. Führen Sie das folgende PowerShell-Skript aus:

    $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. Öffnen Sie die Datei C:\Program Files\Citrix\Monitor\Service\Citrix.Monitor.exe.Config mit einem Texteditor. Suchen Sie das Element <add key="owin:baseAddress" value="http://localhost/citrix/monitor/odata/v4" /> und ändern Sie es in <add key="owin:baseAddress" value="https://localhost/citrix/monitor/odata/v4" />.

Cipher Suites konfigurieren

Die Reihenfolge der Cipher Suites muss die Cipher Suites TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 oder TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (oder beide) enthalten; und diese Cipher Suites müssen allen TLS_DHE_-Cipher Suites vorangehen.

  1. Navigieren Sie im Microsoft Gruppenrichtlinien-Editor zu Computerkonfiguration > Administrative Vorlagen > Netzwerk > SSL-Konfigurationseinstellungen.
  2. Bearbeiten Sie die Richtlinie „SSL Cipher Suite Order“. Standardmäßig ist diese Richtlinie auf „Nicht konfiguriert“ eingestellt. Setzen Sie diese Richtlinie auf „Aktiviert“.
  3. Ordnen Sie die Suites in der richtigen Reihenfolge an. Entfernen Sie alle Cipher Suites, die Sie nicht verwenden möchten.

Stellen Sie sicher, dass entweder TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 oder TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 allen TLS_DHE_-Cipher Suites vorangeht.

Auf Microsoft Learn finden Sie auch Konfigurieren der TLS-Cipher-Suite-Reihenfolge.

Nur HTTPS-Verkehr erzwingen

Es wird empfohlen, den XML-Dienst so zu konfigurieren, dass er HTTP-Verkehr ignoriert.

  1. Führen Sie regedit aus.
  2. Öffnen Sie HKLM\Software\Citrix\DesktopServer\
  3. Erstellen Sie einen neuen DWORD-Wert mit dem Namen XmlServicesEnableNonSsl und setzen Sie ihn auf 0.
  4. Starten Sie den Broker Service neu.

Es gibt einen entsprechenden Registrierungs-DWORD-Wert XmlServicesEnableSsl, den Sie erstellen können, um HTTPS-Verkehr zu ignorieren. Stellen Sie sicher, dass dieser nicht auf 0 gesetzt ist.

HTTP- oder HTTPS-Ports ändern

Standardmäßig lauscht der XML-Dienst auf dem Controller an Port 80 für HTTP-Verkehr und an Port 443 für HTTPS-Verkehr. Obwohl Sie nicht standardmäßige Ports verwenden können, sollten Sie sich der Sicherheitsrisiken bewusst sein, die entstehen, wenn ein Controller nicht vertrauenswürdigen Netzwerken ausgesetzt wird. Die Bereitstellung eines eigenständigen StoreFront-Servers ist dem Ändern der Standardeinstellungen vorzuziehen.

Um die vom Controller verwendeten Standard-HTTP- oder HTTPS-Ports zu ändern, führen Sie den folgenden Befehl aus Studio aus:

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

Dabei gilt:

  • <http-port> ist die Portnummer für HTTP-Verkehr
  • <https-port> ist die Portnummer für HTTPS-Verkehr.

Hinweis:

Nach dem Ändern eines Ports zeigt Studio möglicherweise eine Meldung zur Lizenzkompatibilität und zum Upgrade an. Um das Problem zu beheben, registrieren Sie die Dienstinstanzen mithilfe der folgenden PowerShell-Cmdlet-Sequenz neu:

Get-ConfigRegisteredServiceInstance -ServiceType Broker -Binding XML_HTTPS |
Unregister-ConfigRegisteredServiceInstance
Get-BrokerServiceInstance | where Binding -eq "XML_HTTPS" |
Register-ConfigServiceInstance
<!--NeedCopy-->
TLS auf Delivery Controllern aktivieren