SSL

XenAppまたはXenDesktopのサイトのSecure Sockets Layer(SSL)セキュリティプロトコルを構成するには、以下の手順が必要です。

  • サーバー証明書を入手して、すべてのDelivery Controller上にインストールして登録します。さらに、SSL証明書のポート構成を行います。詳しくは、『SSLサーバー証明書のControllerへのインストール』を参照してください。

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

  • ユーザーとVirtual Delivery Agent(VDA)間のSSL接続を有効にします。これを行うには、以下のタスクが必要です:

    以下の要件および考慮事項があります。

    • ユーザーとVDA間のSSL接続を有効にするのは、XenApp 7.6サイト、XenDesktop 7.6サイト、およびこれ以降のリリースでのみ必要です。
    • デリバリーグループおよびVDA上のSSLは、コンポーネントのインストール、サイトの作成、およびマシンカタログとデリバリーグループの作成を行った後で構成します。
    • デリバリーグループでSSLを構成するには、Controllerのアクセス規則を変更するための権限が必要です。すべての管理権限を実行できる管理者には必要な権限が付与されています。
    • VDA上のSSLを構成するには、そのマシン上のWindows管理者権限が必要です。
    • VDAを以前のバージョンからアップグレードしてSSLを構成する場合は、アップグレード前にすべてのSSLリレーソフトウェアをアンインストールしておく必要があります。
    • PowerShellスクリプトでは、静的に割り当てられるVDA上のSSLを構成できます。Machine Creation ServicesまたはProvisioning ServicesでプロビジョニングされてプールされるVDAは再起動時にマシンイメージがリセットされるため、PowerShellスクリプトでSSLを構成することはできません。

Windowsレジストリの編集が必要なタスクを行う場合の注意事項。

注意: レジストリエディターの使用を誤ると、深刻な問題が発生する可能性があり、Windowsの再インストールが必要になる場合もあります。レジストリエディターの誤用による障害に対して、シトリックスでは一切責任を負いません。レジストリエディターは、お客様の責任と判断の範囲でご使用ください。また、レジストリファイルのバックアップを作成してから、レジストリを編集してください。

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

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

HTTPS接続を使用する場合、XML Serviceはサーバー証明書を使用したSSL機能をサポートしますが、クライアント証明書はサポートしません。サーバー証明書を入手して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上のSSL設定について

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

  • SSLで使用される証明書ストア内の証明書

  • SSL接続で使用されるTCPポート

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

  • 許可されるSSLプロトコルのバージョン

    サポートされるSSLプロトコルのバージョンは、低いものから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の接続のみが許可されます。

  • 許可されるSSL暗号

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

    サポートされている暗号の組み合わせはGOV(ernment)、COM(mercial)、およびALLの3つです。暗号の組み合わせは、WindowsのFIPSモードによっても異なります。WindowsのFIPSモードについては、http://support.microsoft.com/kb/811833を参照してください。次の表は、各暗号の組み合わせに含まれる暗号を示しています。

                 
    SSL暗号の組み合わせ GOV COM ALL GOV COM ALL
    FIPSモード オフ オフ オフ オン オン オン
    RSA_KEYX x x x x x x
    RSA_SIGN x x x x x x
    3DES x   x x   x
    RC4   x x      
    MD5 x x x      
    SHA x x x x x x
    SHA_256 x x x x x x
    SHA_384 x x x x x x
    SHA_512 x x x x x x
    AES x x x x x x

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

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

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

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

  • Citrix ICA(デフォルトで1494)
  • Citrix CGP(デフォルトで2598)
  • Citrix WebSocket(デフォルトで8008)

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

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

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

構文:

Enable-VdaSSL {-Enable -Disable} [–SSLPort <port>] [-SSLMinVersion “<min-ssl-version>”] [-SSLCipherSuite “<suite>”] [-CertificateThumbPrint “<thumbprint>”]
パラメーター 説明
-Enable SSLリスナーをVDA上にインストールして有効にします。このパラメーターまたは–Disableパラメーターのいずれかを指定する必要があります。
-Disable VDA上のSSLリスナーを無効にします。このパラメーターまたは–Enableパラメーターのいずれかを指定する必要があります。このパラメーターを指定した場合、ほかのパラメーターは無視されます。
–SSLPort <port> SSLポート。デフォルトは以下のとおりです。 443
-SSLMinVersion “<min-ssl-version>” 許可されるSSLプロトコルの最低バージョンを二重引用符で囲んで指定します。有効な値:”SSL_3.0”、”TLS_1.0”、”TLS_1.1”、および”TLS_1.2”。デフォルト:”TLS_1.0”
-SSLCipherSuite “<suite>” SSL暗号スイートを二重引用符で囲んで指定します。有効な値:”GOV”、”COM”、および”ALL”。デフォルト:”ALL”
-CertificateThumbPrint “<thumbprint>” 証明書ストア内のSSL証明書の拇印を二重引用符で囲んで指定します。通常、証明書ストア内に複数の証明書が配置されている場合にこのパラメーターを使用します。この拇印により、スクリプトで適切な証明書が選択されます。デフォルト:証明書ストアの[ローカルコンピューター]>[個人]>[証明書]で最初に検出された証明書

例:

次のスクリプトでは、SSLリスナーをインストールして有効にします。すべてのオプションパラメーターのデフォルト値が適用されます。

Enable-VdaSSL –Enable

次のスクリプトでは、SSLリスナーをインストールして有効にして、SSLポートとして400、暗号スイートGOV、およびSSLプロトコルの最低バージョンとしてTLS 1.2を設定します。

Enable-VdaSSL – Enable –SSLPort 400 ‘SSLMinVersion “TLS_1.2”
–SSLCipherSuite “GOV”

次のスクリプトでは、VDA上のSSLリスナーを無効にします。

Enable-VdaSSL –Disable

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

VDA上のSSLを手作業で構成するには、SSL証明書の秘密キーに対する読み取り権限を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以外のSSL TCPポートを使用する場合は、そのポートがWindowsファイアウォールで開放されていることを確認します(Windowsファイアウォールで受信規則を作成するときは、[接続を許可する]および[有効]が選択されていることを確認してください)。
  8. ほかのアプリケーションやサービスなど(IISなど)がそのSSL TCPポートを使用していないことを確認します。
  9. VDAs for Windows Server OSの場合は、変更を適用するためのマシンを再起動します。VDA for Windows Desktop OSのマシンを再起動する必要はありません。

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

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