Product Documentation

Transport Layer Security(TLS)

Jul 08, 2016
XenAppまたはXenDesktopのサイトのTLS(Transport Layer Security)プロトコルを構成するには、以下の手順が必要です。
  • サーバー証明書を入手して、すべてのDelivery Controller上にインストールして登録します。さらに、SSL証明書のポート構成を行います。 詳しくは、「TLSサーバー証明書のControllerへのインストール」を参照してください。

    必要な場合は、ControllerでHTTPおよびHTTPSトラフィック用に使用されるポートを変更することもできます。

  • ユーザーとVirtual Delivery Agent(VDA)間のTLS接続を有効にします。これを行うには、以下のタスクが必要です。
    以下の要件および考慮事項があります。
    • ユーザーとVDA間のTLS接続を有効にするのは、XenApp 7.6サイト、XenDesktop 7.6サイト、およびこれ以降のリリースでのみ必要です。
    • デリバリーグループおよびVDA上のTLSは、コンポーネントのインストール、サイトの作成、およびマシンカタログとデリバリーグループの作成を行った後で構成します。
    • デリバリーグループでTLSを構成するには、Controllerのアクセス規則を変更するための権限が必要です。すべての管理権限を実行できる管理者には必要な権限が付与されています。
    • VDA上のTLSを構成するには、そのマシン上のWindows管理者権限が必要です。
    • VDAを以前のバージョンからアップグレードしてTLSを構成する場合は、アップグレード前にすべてのSSLリレーソフトウェアをアンインストールしておく必要があります。
    • PowerShellスクリプトでは、静的に割り当てられるVDA上のTLSを構成できます。Machine Creation ServicesまたはProvisioning ServicesでプロビジョニングされてプールされるVDAは再起動時にマシンイメージがリセットされるため、PowerShellスクリプトでTLSを構成することはできません。
Windowsレジストリの編集が必要なタスクを行う場合の注意事項。
注意:レジストリエディターの使用を誤ると、深刻な問題が発生する可能性があり、Windowsの再インストールが必要になる場合もあります。 レジストリエディターの誤用による障害に対して、Citrixでは一切責任を負いません。 レジストリエディターは、お客様の責任と判断の範囲でご使用ください。 また、レジストリファイルのバックアップを作成してから、レジストリを編集してください。

サイトデータベース接続のTLSを有効にする方法については、CTX139664を参照してください。

TLSサーバー証明書のControllerへのインストール

HTTPS接続を使用する場合、XML Serviceはサーバー証明書を使用したTLS機能をサポートしますが、クライアント証明書はサポートしません。 サーバー証明書を入手してController上にインストールおよび登録し、SSL証明書のポート構成を行うには、以下のタスクが必要です。

HTTPまたはHTTPSポートの変更

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

Controllerで使用されるデフォルトのHTTPまたはHTTPSポートを変更するには、StudioでBrokerService.exe -WIPORT <http-port> -WISSLPORT <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

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

HTTPトラフィックがXML Serviceで無視されるように構成するには、Controller上のレジストリHKEY_LOCAL_MACHINE\Software\Citrix\DesktopServer\で以下の値を設定してからBroker Serviceを再起動します。

HTTPトラフィックを無視するには、XmlServicesEnableNonSslを0にします。

同様に、HTTPSトラフィックを無視するレジストリ値であるXmlServicesEnableSslも存在します。 これは0に設定しないでください。

VDA上のTLS設定について

VDA上のTLSを構成すると、インストールされているSSL証明書のアクセス権が変更され、その証明書の秘密キーに対する読み取り権限がICA Serviceに付与されます。ICA Serviceには、以下の情報が提供されます。

  • 証明書ストア内のどの証明書がTLSで使用されるのか
  • どのTCPポートがTLS接続で使用されるのか

    Windowsファイアウォールを使用する環境では、このTCPでの着信接続が許可されている必要があります。 PowerShellスクリプトを使用する場合は、このファイアウォール規則が自動的に構成されます。

  • どのバージョンのTLSプロトコルが許可されるのか

Important

SSLv3の使用状況を確認し、必要に応じ、展開を再構成してSSLv3のサポートを削除する措置をとることをお勧めします。 CTX200238を参照してください。

サポートされるTLSプロトコルのバージョンは、低いものからSSL 3.0、TLS 1.0、TLS 1.1、およびTLS 1.2です。 サポートされるSSLプロトコルを指定するときは、許可する最低バージョンを指定します。

たとえば、最低バージョンとしてTLS 1.1を指定すると、TLS 1.1およびTLS 1.2のプロトコルを使用した接続が許可されます。 最低バージョンとしてSSL 3.0を指定すると、サポートされるSSLプロトコルのすべてのバージョンが許可されます。 最低バージョンとしてTLS 1.2を指定すると、TLS 1.2の接続のみが許可されます。

  • どのTLS暗号が許可されるのか

    暗号スイート(Cipher Suite)とは、一般的なTLS暗号の一覧を指します。 クライアントがVDAに接続するときは、そのクライアントがサポートするTLS暗号の一覧をVDAに送信します。VDA側では、構成済みの暗号スイート内にクライアントのいずれかのSSL暗号と一致するものがあるかどうかがチェックされ、あった場合にのみ接続が確立されます。 一致するSSL暗号がない場合、その接続はVDAにより拒否されます。

    サポートされている暗号スイートはGOV(ernment)、COM(mercial)、およびALLの3つです。 これらの暗号スイートに含まれる暗号は、WindowsのFIPSモードによって異なります。WindowsのFIPSモードについては、http://support.microsoft.com/kb/811833を参照してください。 次の表は、各暗号スイートに含まれる暗号を示しています。
    TLS暗号スイートGOVCOMすべてGOVCOMすべて
    FIPSモードOffOffOffOnOnOn
    RSA_KEYX
    RSA_SIGN
    3DES  
    RC4    
    MD5   
    SHA
    SHA_256
    SHA_384
    SHA_512
    AES

TLSを構成したVDAと構成していないVDAを同一デリバリーグループ内で混在させることはできません。 デリバリーグループのTLSを構成する前に、そのグループに属しているすべてのVDA上でTLS構成を完了しておく必要があります。

VDA上のTLS構成:PowerShellスクリプトの使用

VDA上でEnable-VdaSSL.ps1スクリプトを実行すると、そのVDAでのTLSリスナーを有効または無効にできます。 このスクリプトは、インストールメディアのSupport >Tools > SslSupportフォルダーに収録されています。

スクリプトでTLSを有効にする場合、指定したTLS TCPポートについての既存のWindowsファイアウォール規則がすべて無効になります。その後で、ICA Serviceがそのポートで着信接続を受け入れるための新しい規則が追加されます。 また、スクリプトにより以下のWindowsファイアウォール規則が無効になります。
  • Citrix ICA(デフォルトで1494)
  • Citrix CGP(デフォルトで2598)
  • Citrix WebSocket(デフォルトで8008)

この結果、ユーザーはTLSでのみ接続できるようになり、Raw ICA、CGP、またはWebSocketで接続することはできなくなります。

このスクリプト内には、以下の構文および使用例が記載されています。Notepad++などのツールを使用してこれらを参照できます。

–Enableまたは–Disableパラメーターの指定は必須です。そのほかのパラメーターはオプションです。

構文

Enable-VdaSSL {-Enable | -Disable} [–SSLPort <port>] [-SSLMinVersion "<min-ssl-version>"] [-SSLCipherSuite"<suite>"] [-CertificateThumbPrint "<thumbprint>"]

パラメーター説明
-EnableTLSリスナーをVDA上にインストールして有効にします。 このパラメーターまたは–Disableパラメーターのいずれかを指定する必要があります。
-DisableVDA上のTLSリスナーを無効にします。 このパラメーターまたは–Enable パラメーターのいずれかを指定する必要があります。 このパラメーターを指定した場合、ほかのパラメーターは無視されます。
–SSLPort <port>TLSポート指定します。 デフォルト:443
-SSLMinVersion "<min-ssl-version>"

許可されるTLSプロトコルの最低バージョンを二重引用符で囲んで指定します。 有効な値:"SSL_3.0"、"TLS_1.0"、"TLS_1.1"、および"TLS_1.2"。 デフォルト:"TLS_1.0"

重要:SSLv3の使用状況を確認し、必要に応じ、展開を再構成してSSLv3のサポートを削除する措置をとることをお勧めします。 CTX200238を参照してください。

-SSLCipherSuite "<suite>"TLS暗号スイートを二重引用符で囲んで指定します。 有効な値:"GOV"、"COM"、および"ALL"。 デフォルト:"ALL"
-CertificateThumbPrint "<thumbprint>"証明書ストア内のSSL証明書の拇印を二重引用符で囲んで指定します。 通常、証明書ストア内に複数の証明書が配置されている場合にこのパラメーターを使用します。この拇印により、スクリプトで適切な証明書が選択されます。 デフォルト:証明書ストアの[ローカルコンピューター]>[個人]>[証明書]で最初に検出された証明書

次のスクリプトでは、TLS 1.2プロトコルバージョン値をインストールして有効にします。
Enable-VdaSSL –Enable
次のスクリプトでは、TLSリスナーをインストールして有効にして、TLSポートとして400、暗号スイートGOV、およびSSLプロトコルの最低バージョンとしてTLS 1.2を設定します。
Enable-VdaSSL – Enable –SSLPort 400 'SSLMinVersion "TLS_1.2"  –SSLCipherSuite "GOV"
次のスクリプトでは、VDA上のTLSリスナーを無効にします。
Enable-VdaSSL –Disable

VDA上のTLS構成:手作業による構成

VDA上のTLSを手作業で構成するには、TLS証明書の秘密キーに対する読み取り権限をVDA上のNT SERVICE\PorticaService(VDA for Windows Desktop OSの場合)またはNT SERVICE\TermService(VDA for Windows Server OSの場合)に付与します。 VDAがインストールされたマシン上で、以下の手順を行います。
  1. Microsoft管理コンソール(MMC)を起動します([スタート]>[ファイル名を指定して実行]>mmc.exe)。
  2. MMCに証明書スナップインを追加します。
    1. [ファイル]>[スナップインの追加と削除]の順に選択します。
    2. [証明書]を選択して[追加]をクリックします。
    3. [このスナップインで管理する証明書]で[コンピューターアカウント]をクリックし、[次へ]をクリックします。
    4. [このスナップインで管理するコンピューター]で[ローカルコンピューター]をクリックし、[完了]をクリックします。
  3. コンソールツリーの[証明書(ローカルコンピューター)]>[個人]>[証明書]で証明書を右クリックして、[すべてのタスク]>[秘密キーの管理]の順に選択します。
  4. [<FriendlyName> private keysのアクセス許可]ダイアログボックス(<FriendlyName>はSSL証明書の名前)が開きます。 以下のいずれかのサービスを追加して、[読み取り]アクセスを許可します。
    • VDA for Windows Desktop OSでは"PORTICASERVICE"
    • VDA for Windows Server OSでは"TERMSERVICE"
  5. SSL証明書をダブルクリックします。 [証明書]ダイアログボックスの[詳細]タブをクリックして、一番下までスクロールします。 [拇印]をクリックします。
  6. regeditを実行して、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawdを開きます。
    1. SSL Thumbprintキーを編集して、SSL証明書の拇印の値をバイナリ値にコピーします。 [バイナリ値の編集]ダイアログボックスでは、不明な項目(「0000」や特殊文字など)は無視して構いません。
    2. SSLEnabledキーを編集して、DWORD値を1に変更します (このDWORD値を0にするとSSLが無効になります)。
    3. このレジストリパスでは、必要に応じて以下のデフォルト値を変更できます。
      • SSLPortのDWORD値 – SSLポート番号。 デフォルト:443。
      • SSLMinVersionのDWORD値 – 1 = SSL 3.0、2 = TLS 1.0、3 = TLS 1.1、4 = TLS 1.2。 デフォルト:2(TLS 1.0)。
      • SSLCipherSuiteのDWORD値 – 1 = GOV、2 = COM、3 = ALL。 デフォルト:3(ALL)。
  7. デフォルトの443以外のTLS TCPポートを使用する場合は、そのポートがWindowsファイアウォールで開放されていることを確認します (Windowsファイアウォールで受信規則を作成するときは、[接続を許可する]および[有効]が選択されていることを確認してください)。
  8. ほかのアプリケーションやサービスなど(IISなど)がそのTLS TCPポートを使用していないことを確認します。
  9. VDAs for Windows Server OSの場合は、変更を適用するためのマシンを再起動します。 VDA for Windows Desktop OSのマシンを再起動する必要はありません。

デリバリーグループのTLSの構成

TLS接続を構成したVDAを含んでいるすべてのデリバリーグループで、以下の手順を行います。
  1. StudioからPowerShellコンソールを開きます。
  2. asnp Citrix.*を実行してCitrix製品のコマンドレットをロードします。
  3. Get-BrokerAccessPolicyRule -DesktopGroupName '<delivery-group-name>' | Set-BrokerAccessPolicyRule -HdxSslEnabled $trueを実行します。

    ここで、<delivery-group-name>はSSLを構成するデリバリーグループの名前です。

  4. Set-BrokerSite -DnsResolutionEnabled $trueを実行します。

トラブルシューティング

接続エラーが発生した場合は、VDAのシステムイベントログを確認してください。

Receiver for WindowsでTLS関連の接続エラー(1030など)が発生した場合は、Desktop Viewerを無効にしてから再試行してください。接続エラーは解決されませんが、TLSの問題についての情報(証明機関に証明書を要求したときに正しくないテンプレートを使用したなど)が表示される場合があります。