デリバリーコントローラーでTLSを有効にする
デフォルトでは、HTTPとHTTPSの両方が有効になっています。HTTPSは、サーバーのFQDNを共通名として使用する自己署名証明書を使用しますが、これはStoreFront™やWebブラウザーによって信頼されていません。
delivery controller™でTLSを有効にするには、次の操作を行う必要があります。
-
すべてのDelivery Controllerでサーバー証明書を取得、インストール、および登録します。詳しくは、「証明書の要求とインストール」を参照してください。
-
TLS証明書を使用してポートを構成します。詳しくは、「証明書のインストール」を参照してください。
- 監視サービスでHTTPSを有効にする。
-
HTTPを無効にしてHTTPSトラフィックを強制します。詳しくは、「HTTPSトラフィックのみを強制するHTTPSトラフィックのみを強制する」を参照してください。
- オプションで、ControllerがHTTPおよびHTTPSトラフィックをリッスンするために使用するポートを変更できます。詳しくは、「HTTPまたはHTTPSポートの変更」を参照してください。
証明書の要求とインストール
TLSを使用するには、共通名またはサブジェクトの別名がサーバーのFQDNと一致する証明書をインストールする必要があります。delivery controllerの前にロードバランサーを使用している場合は、サーバーとロードバランサーの両方のFQDNをサブジェクトの別名として含めます。詳しくは、「証明書」を参照してください。StoreFrontがdelivery controllerに接続するには、RSAデジタル署名アルゴリズムを使用する必要があります。StoreFrontはECDSAアルゴリズムを使用する証明書をサポートしていません。
SSL/TLSリスナーポートの構成
Web StudioおよびDirectorの一部としてインストールされるIIS Windowsコンポーネントが同じサーバーにインストールされている場合は、IISを使用してTLSを構成できます。詳しくは、「Web StudioおよびDirectorでTLSを有効にする」を参照してください。それ以外の場合は、PowerShellを使用して証明書を構成するには、次の手順を実行します。
-
既存の証明書がバインドされているかどうかを確認するには、コマンドプロンプトを開き、
netsh http show sslcertを実行します。netsh http show sslcert <!--NeedCopy--> -
既存のバインドがある場合は、それを削除します。
netsh http delete sslcert ipport=0.0.0.0:443 <!--NeedCopy-->既存のバインドで指定されていた場合は、
0.0.0.0:443を特定のIPアドレスとポートに置き換えます。 -
以前にインストールした証明書のサムプリントを見つけます。サムプリントを表示するには、コンピューター証明書の管理を開き、証明書を参照して開き、詳細タブに移動します。

または、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-->指定されたフレンドリ名を持つ証明書が複数ある場合、これは連結された複数のサムプリントを返し、適切なサムプリントを選択する必要があります。
-
証明書をポートにバインドするには、
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: シトリックス ブローカー サービスのグイッドです。注:
証明書の更新または再バインドを行う際は、任意のGUIDではなく、Broker Serviceに関連付けられた特定の
appidを使用してください。 Citrix Broker Serviceの正しいappidを見つけるには:- 管理者としてPowerShellコマンドウィンドウを開き、次のコマンドを実行します。
``` Get-WmiObject -Class Win32_Product | Select-String -Pattern "broker" <!--NeedCopy--> ```- 出力でCitrix Broker Serviceの識別番号 (グローバル一意識別子 (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が有効になったら、StoreFront展開 とNetScaler Gatewayを構成して、HTTPの代わりにHTTPSを使用してデリバリーコントローラーに接続するようにします。
HTTPS 用モニターサービス OData API の構成
モニターサービスは、Citrix®およびサードパーティアプリケーションがデータを照会できるように、OData v3およびv4 APIを提供します。DirectorはOData API V3を使用して監視サービスに接続します。HTTPS用にモニターOData APIを構成するには、次の手順を完了します。
-
次の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--> -
テキストエディターでファイル
C:\Program Files\Citrix\Monitor\Service\Citrix.Monitor.exe.Configを開きます。要素<add key="owin:baseAddress" value="http://localhost/citrix/monitor/odata/v4" />を見つけて、<add key="owin:baseAddress" value="https://localhost/citrix/monitor/odata/v4" />に変更します。
暗号スイートの構成
暗号スイートの順序リストには、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 または TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 の暗号スイート(またはその両方)を含める必要があります。また、これらの暗号スイートは、TLS_DHE_ の暗号スイートよりも前に配置する必要があります。
- Microsoftグループポリシーエディターを使用して、コンピューターの構成 > 管理用テンプレート > ネットワーク > SSL構成設定に移動します。
- 「SSL暗号スイートの順序」ポリシーを編集します。デフォルトでは、このポリシーは「未構成」に設定されています。このポリシーを「有効」に設定します。
- スイートを正しい順序に並べ替えます。使用したくない暗号スイートはすべて削除します。
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 または TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 のいずれかが、TLS_DHE_ の暗号スイートよりも前に配置されていることを確認してください。
Microsoft Learnで、TLS暗号スイートの順序の構成 も参照してください。
HTTPSトラフィックのみを強制する
XMLサービスを構成してHTTPトラフィックを無視するようにすることをお勧めします。
-
regeditを実行します -
HKLM\Software\Citrix\DesktopServer\を開きます - 名前を
XmlServicesEnableNonSslにして新しいDWORD値を作成し、0に設定します。 - ブローカーサービスを再起動します。
HTTPSトラフィックを無視するために作成できる、対応するレジストリDWORD値 XmlServicesEnableSsl があります。これが0に設定されていないことを確認してください。
HTTPまたはHTTPSポートを変更する
デフォルトでは、Controller上のXML Serviceは、HTTPトラフィックにはポート80を、HTTPSトラフィックにはポート443をリッスンします。デフォルト以外のポートを使用することもできますが、Controllerを信頼できないネットワークに公開することによるセキュリティリスクに注意してください。デフォルトを変更するよりも、スタンドアロンのStoreFrontサーバーを展開する方が望ましいです。
Controllerで使用されるデフォルトのHTTPまたはHTTPSポートを変更するには、Studioから次のコマンドを実行します。
BrokerService.exe -StoreFrontPort <http-port> -StoreFrontTlsPort <https-port>
<!--NeedCopy-->
ここで、
-
<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-->