Citrix Virtual Apps and Desktops

Delivery ControllerでTLSを有効にする

デフォルトでは、HTTPとHTTPSの両方が有効になっています。 HTTPSは、サーバーのFQDNを共通名として使用した自己署名証明書を使用しますが、これはStoreFrontまたはWebブラウザーによって信頼されません。

Delivery ControllerでTLSを有効にするには、次の手順を実行する必要があります:

証明書の要求とインストール

TLSを使用するには、共通名またはサブジェクトの別名がサーバーの完全修飾ドメイン名と一致する証明書をインストールする必要があります。 Delivery Controllerの前でロードバランサーを使用している場合は、サーバーとロードバランサーの完全修飾ドメイン名の両方をサブジェクトの別名として含めます。 詳しくは、「証明書」を参照してください。 StoreFrontをDelivery Controllerに接続するには、RSA Digital Signature Algorithm.を使用する必要があります。 StoreFrontは、ECDSAアルゴリズムを使用する証明書をサポートしていません。

SSL/TLSリスナーポートの構成

Web StudioおよびDirectorの一部としてインストールされている同じサーバーにIIS Windowsコンポーネントがインストールされている場合は、IISを使用してTLSを構成できます。 詳しくは、「Web StudioとDirectorでTLSを有効にする」を参照してください。 それ以外の場合、PowerShellを使用して証明書を構成するには、次の手順を実行します:

  1. 既存の証明書がバインドされているかどうかを確認するには、コマンドプロンプトを開き、netsh http show sslcertを実行します:

      netsh http show sslcert
    <!--NeedCopy-->
    
  2. 既存のバインディングがある場合は削除します。

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

    既存のバインディングに指定されている場合は、0.0.0.0:443を特定のIPアドレスとポートに置き換えます。

  3. 以前にインストールした証明書の拇印を見つけます。 拇印を表示するには、[Manage computer certificates]を開き、証明書を参照して開き、[Details]タブに移動します。

    拇印が表示された証明書プロパティのスクリーンショット

    または、PowerShellを使用することもできます。 たとえば、次のスクリプトは、共通名がサーバーのホスト名と一致する証明書を検索し、サムネイルを出力します:

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

    証明書の共通名がホスト名と一致しない場合、これは失敗します。 ホスト名に複数の証明書がある場合は、連結された複数のサムプリントが返されるため、適切なサムプリントを選択する必要があります。

    次の例では、フレンドリ名で証明書を検索します:

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

    指定されたフレンドリ名を持つ証明書が複数ある場合は、連結された複数のサムプリントが返されるため、適切なサムプリントを選択する必要があります。

  4. 証明書をポートにバインドするには、netsh http add sslcertコマンドを使用します:

      netsh http add sslcert ipport=[IP address]:443 certhash=[certificate hash] appid=[application GUID] disablelegacytls=enable
    <!--NeedCopy-->
    
    • ipportはIPアドレスとポートを指定します。 0.0.0.0:443を使用すると、これがすべてのIPアドレスに適用されます。 代わりに特定のIPアドレスを指定することもできます。

    • appid - バインディングを追加したアプリケーションを識別するために使用される任意のGUID。 任意の有効なGUIDを使用できます(例:{91fe7386-e0c2-471b-a252-1e0a805febac})。

    • disablelegacytls=enable - TLSのレガシーバージョンを無効にします。 このパラメーターはWindows 2022以降で使用できます。 Windows 2022ではTLS 1.0および1.1が無効になります。 Windows 2025では、TLS 1.0および1.1はデフォルトで無効になっているため、これは必要ありません。

    たとえば、次のコマンドを実行して、サムプリントbc96f958848639fd101a793b87915d5f2829b0b6を持つ証明書をすべてのIPアドレスのポート443にバインドします:

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

HTTPSが有効になったら、Delivery Controllerへの接続にHTTPではなくHTTPSを使用するように、StoreFront展開およびNetscaler Gatewayを構成する必要があります。

HTTPSのMonitor Service OData APIを構成する

モニターサービスは、Citrixおよびサードパーティアプリケーションがデータを照会できるようにするOData v3およびv4 APIを提供します。 Directorは、OData API V3を使用して監視サービスに接続します。 HTTPS用のMonitor Service OData APIを構成するには、次の手順を実行します:

  1. 次の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. テキストエディターでファイルC:\Program Files\Citrix\Monitor\Service\Citrix.Monitor.exe.Configを開きます。 要素&lt;add key="owin:baseAddress" value="http://localhost/citrix/monitor/odata/v4" /&gt;を見つけて、&lt;add key="owin:baseAddress" value="https://localhost/citrix/monitor/odata/v4" /&gt;に変更します。

暗号の組み合わせを構成する

暗号の組み合わせ順序一覧には、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384、またはTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256の暗号の組み合わせ(またはその両方)を含める必要があり、これらの暗号の組み合わせは、TLS_DHE_の暗号の組み合わせよりも前に位置する必要があります。

  1. Microsoftのグループポリシーエディターを使用して、[コンピューターの構成]>[管理用テンプレート]>[ネットワーク]>[SSL構成設定] の順に参照します。
  2. 「SSL暗号の順位」ポリシーを編集します。 デフォルトでは、このポリシーは[未構成]に設定されています。 このポリシーを [有効] に設定します。
  3. 暗号の組み合わせを適切な順序に並び替え、使用しない暗号の組み合わせを削除します。

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384またはTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256のどちらかがすべてのTLS_DHE_暗号の組み合わせより前に配置されていることを確認します。

Microsoft Learnでは、「トランスポート層セキュリティ(TLS)を管理する」も参照してください。

HTTPSトラフィックのみに制限する

XMLサービスをHTTPトラフィックを無視するように構成することをお勧めします。

  1. regeditを実行します
  2. 「HKLM\Software\Citrix\DesktopServer\」を開きます
  3. XmlServicesEnableNonSslという名前の新しいDWORD値を作成し、0に設定します。
  4. Broker Serviceを再起動します。

HTTPSトラフィックを無視するために作成できるレジストリのDWORD値XmlServicesEnableSslも存在します。 これは0に設定しないでください。

HTTPまたはHTTPSポートの変更

デフォルトでは、XML ServiceはHTTPトラフィックにはポート80を、HTTPSトラフィックにはポート443を使用します。 これらのポート番号を変更することもできますが、信頼されないネットワークにControllerを露出させる場合のセキュリティ上のリスクについて考慮してください。 デフォルト構成を変更する場合は、スタンドアロンのStoreFrontサーバーを使用することをお勧めします。

Controllerで使用されるデフォルトのHTTPまたはHTTPSポートを変更するには、Studioで次のコマンドを実行します:

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

ここで、&lt;http-port&gt;はHTTPトラフィックのポート番号で、&lt;https-port&gt;はHTTPSトラフィックのポート番号です。

注意:

ポートが変更されると、ライセンスの互換性およびアップグレードに関するメッセージがStudioに表示されます。 この問題を解決するには、以下のPowerShellコマンドレットを順に実行してサービスインスタンスを再登録してください:

  Get-ConfigRegisteredServiceInstance -ServiceType Broker -Binding XML_HTTPS |
Unregister-ConfigRegisteredServiceInstance
Get-BrokerServiceInstance | where Binding -eq "XML_HTTPS" |
Register-ConfigServiceInstance
<!--NeedCopy-->
Delivery ControllerでTLSを有効にする