デリバリーコントローラーで TLS を有効にする

デリバリーコントローラー™ で TLS を有効にするには、次の手順を実行する必要があります。

  • すべての Delivery Controller でサーバー証明書を取得、インストール、および登録します。詳細については、「証明書の要求とインストール」を参照してください。

  • TLS 証明書を使用してポートを構成します。詳細については、「証明書の要求とインストール」を参照してください。

  • HTTP を無効にして HTTPS トラフィックを強制します。詳細については、「HTTPS トラフィックのみを強制する」を参照してください。

  • オプションで、コントローラーが HTTP および HTTPS トラフィックをリッスンするために使用するポートを変更できます。詳細については、「HTTP または HTTPS ポートの変更」を参照してください。

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

TLS を使用するには、代替名に DDC の FQDN が含まれる証明書をインストールする必要があります。適切な証明書を作成する必要があります。これは、Microsoft 証明機関またはその他の内部または外部の証明機関を使用して行うことができます。

Microsoft 証明機関を使用して証明書を作成する

Microsoft 証明機関が Active Directory ドメインまたは Delivery Controller が参加している信頼されたフォレストに統合されている場合、証明書 MMC スナップインの証明書登録ウィザードから証明書を取得できます。Microsoft 証明機関は、Web サーバーでの使用に適した証明書テンプレートを公開している必要があります。Citrix Gateway または StoreFront™ サーバーを別のドメインで使用している場合は、ルート証明機関証明書をエクスポートし、Citrix Gateway および StoreFront にインポートする必要があります。

  1. Delivery Controller で、MMC コンソールを開き、証明書スナップインを追加します。プロンプトが表示されたら、コンピューターアカウントを選択します。

  2. 個人 > 証明書を展開し、すべてのタスク > 新しい証明書の要求コンテキストメニューコマンドを使用します。

    MMC 証明書スナップイン

  3. 開始するには次へをクリックし、Active Directory 登録から証明書を取得することを確認するには次へをクリックします。

  4. Web サーバーのエクスポート可能など、適切なテンプレートを選択します。テンプレートが件名の値を自動的に提供するように設定されている場合は、詳細を指定せずに登録をクリックできます。

    証明書要求ダイアログ(/ja-jp/citrix-virtual-apps-desktops/2407/media/tls-request-certificates.png)

  5. 証明書テンプレートの詳細を提供するには、詳細矢印ボタンをクリックし、次の項目を設定します。

    サブジェクト名: 共通名を選択し、Delivery ControllerのFQDNを追加します。

    代替名:DNSを選択し、Delivery Controllerの完全修飾ドメイン名(FQDN)を追加します。

    証明書のプロパティ(/ja-jp/citrix-virtual-apps-desktops/2407/media/tls-certificate-properties.png)

  6. OKを押します。

  7. 登録を押して証明書を作成し、インストールします

既存の証明書ファイルをインストールする

ファイルとして既存の証明書がある場合は、インストールできます。

  1. Delivery ControllerでMMCコンソールを開き、証明書スナップインを追加します。プロンプトが表示されたら、コンピューターアカウントを選択します。

  2. 個人 > 証明書を展開し、すべてのタスク > インポートコンテキストメニューコマンドを使用します。

  3. 証明書ファイルを参照します。

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

IIS Windowsコンポーネントが同じサーバーにインストールされている場合 (Web StudioおよびDirectorの一部としてインストールされます)、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-->
    

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

  3. 以前にインストールした証明書のサムプリントを見つけます。サムプリントを表示するには、コンピューター証明書の管理を開き、証明書を参照して開き、詳細タブに移動します。

    証明書のプロパティでサムプリントが表示されているスクリーンショット(/ja-jp/citrix-virtual-apps-desktops/2411/media/certificate-thumbprint.png)

    または、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アドレスを指定することもできます。

    • certhash: 前のステップで特定した証明書のサムプリント。

    • appid: Citrix Broker サービスのグローバル一意識別子。

      注:

      証明書を更新または再バインドする際は、任意のGUIDではなく、Broker Service に関連付けられた特定の appid を使用してください。

      シトリックス ブローカー サービスの正しい appid を見つけるには:

      1. 管理者としてPowerShellコマンドウィンドウを開き、次のコマンドを実行します。

         Get-WmiObject -Class Win32_Product | Select-String -Pattern "broker"
         <!--NeedCopy-->
        
      2. 出力でシトリックス ブローカー サービスのIdentifyingNumber (GUID) を見つけます (例: {D333C884-187F-447C-8C67-463F33989C8F})。このGUIDをappidパラメーターに使用します。

    • 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が有効になったら、デリバリーコントローラーへの接続にHTTPではなくHTTPSを使用するように、StoreFront展開とNetscaler Gatewayを構成する必要があります。

暗号スイートを構成する

暗号スイートの順序リストには、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. Open HKLM\Software\Citrix\DesktopServer\
  3. XmlServicesEnableNonSsl という名前の新しいDWORD値を作成し、0に設定します。
  4. ブローカーサービスを再起動します。

HTTPSトラフィックを無視するために作成できる対応するレジストリDWORD値 XmlServicesEnableSsl があります。これが0に設定されていないことを確認してください。

HTTPまたはHTTPSポートを変更する

デフォルトでは、Controller上のXMLサービスは、HTTPトラフィックにはポート80を、HTTPSトラフィックにはポート443をリッスンします。デフォルト以外のポートを使用することもできますが、Controllerを信頼できないネットワークに公開することによるセキュリティリスクに注意してください。デフォルトを変更するよりも、スタンドアロンのStoreFrontサーバーを展開する方が望ましいです。

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

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

ここで、<http-port> はHTTPトラフィックのポート番号、<https-port> はHTTPSトラフィックのポート番号です。

注:

ポートを変更した後、Studioはライセンスの互換性とアップグレードに関するメッセージを表示する場合があります。この問題を解決するには、次のPowerShellコマンドレットシーケンスを使用してサービスインスタンスを再登録します。

Get-ConfigRegisteredServiceInstance -ServiceType Broker -Binding XML_HTTPS |
Unregister-ConfigRegisteredServiceInstance
Get-BrokerServiceInstance | where Binding -eq "XML_HTTPS" |
Register-ConfigServiceInstance
<!--NeedCopy-->
デリバリーコントローラーで TLS を有効にする