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 und von StoreFront™ oder Webbrowsern nicht vertraut wird.

Um TLS auf einem Delivery Controller™ zu aktivieren, müssen Sie:

Anfordern und Installieren eines Zertifikats

Um TLS zu verwenden, müssen Sie ein Zertifikat installieren, dessen allgemeiner Name oder alternativer Antragstellername mit dem FQDN des Servers übereinstimmt. Wenn Sie einen Lastenausgleich vor den Delivery Controllern verwenden, nehmen Sie sowohl den FQDN des Servers als auch den des Lastenausgleichs als alternative Antragstellernamen auf. 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, die als Teil von Web Studio und Director installiert wird, können Sie TLS über IIS konfigurieren. Weitere Informationen finden Sie unter TLS in Web Studio und Director aktivieren. Andernfalls, um das Zertifikat mit 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 vorhanden ist, löschen Sie diese.

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

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

  3. Suchen Sie den Fingerabdruck des zuvor installierten Zertifikats. Um den Fingerabdruck anzuzeigen, öffnen Sie Computerzertifikate verwalten, navigieren Sie zum Zertifikat, öffnen Sie es und gehen 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:

    $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 bestimmte IP-Adresse angeben.

    • certhash: Der Fingerabdruck des Zertifikats, das Sie im vorherigen Schritt identifiziert haben.

    • appid: Die GUID des Citrix Broker Service.

      Hinweis:

      Verwenden Sie beim Erneuern eines Zertifikats oder beim erneuten Binden die spezifische appid, die dem Broker Service zugeordnet ist, anstatt einer beliebigen GUID.

      So finden Sie die richtige appid für den Citrix Broker Service:

      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-->
        
      2. Suchen Sie die IdentifyingNumber (GUID) für den Citrix Broker Service in der Ausgabe (z. B. {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, sollten Sie alle StoreFront-Bereitstellungen und Netscaler Gateways so konfigurieren, dass sie HTTPS anstelle von HTTP verwenden, um eine Verbindung zum Delivery Controller herzustellen.

Konfigurieren des Monitor Service OData API für HTTPS

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" />.

Konfigurieren von Cipher Suites

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.

Siehe auch Konfigurieren der TLS-Cipher-Suite-Reihenfolge auf Microsoft Learn.

Nur HTTPS-Datenverkehr erzwingen

Es wird empfohlen, den XML-Dienst so zu konfigurieren, dass er HTTP-Datenverkehr 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-Dienst neu.

Es gibt einen entsprechenden Registrierungs-DWORD-Wert XmlServicesEnableSsl, den Sie erstellen können, um HTTPS-Datenverkehr zu ignorieren. Stellen Sie sicher, dass er 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-Datenverkehr und an Port 443 für HTTPS-Datenverkehr. 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 der Änderung 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-->

wobei <http-port> die Portnummer für HTTP-Datenverkehr und <https-port> die Portnummer für HTTPS-Datenverkehr ist.

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