ユニバーサルプリントサーバーのTransport Layer Security(TLS)
Transport Layer Security(TLS)プロトコルは、Virtual Delivery Agent(VDA)とユニバーサルプリントサーバーとの間のTCPベースの接続でサポートされています。
警告:
Windowsレジストリの編集を含むタスクの場合:レジストリの編集を誤ると、深刻な問題が発生する可能性があり、オペレーティングシステムの再インストールが必要になる場合もあります。レジストリエディターの誤用による障害に対して、Citrixでは一切責任を負いません。レジストリエディターは、お客様の責任と判断の範囲でご使用ください。また、レジストリファイルのバックアップを作成してから、レジストリを編集してください。
VDAとユニバーサルプリントサーバー間の印刷接続の種類
クリアテキスト接続
印刷に関連する次の接続はVDAから開始され、ユニバーサルプリントサーバーのポートに接続します。これらの接続は、[SSLが有効] ポリシー設定がDisabled(デフォルト)に設定されている場合のみ確立されます。
- クリアテキスト印刷Webサービス接続(TCPポート:8080)
- クリアテキスト印刷データストリーム(CGP)接続(TCPポート:7229)
Microsoft Windows印刷スプーラーサービスで使用されるポートについては、Microsoftのサポート記事Service overview and network port requirements for Windowsを参照してください。このドキュメントのSSL/TLS設定は、NETBIOSおよびWindows印刷スプーラーサービスで確立されたRPC接続には適用されません。[ユニバーサルプリントサーバーの有効化] ポリシー設定が [有効。Windowsのリモート印刷機能にフォールバックする] に設定されている場合、VDAはWindowsネットワーク印刷プロバイダー(win32spl.dll)をフォールバックとして使用します。
暗号化された接続
印刷に関連するSSL/TLS接続は、VDAから開始されユニバーサルプリントサーバーのポートに接続します。これらの接続は、[SSLが有効] ポリシー設定がEnableに設定されている場合のみ確立されます。
- 暗号化印刷Webサービス接続(TCPポート:8443)
- 暗号化印刷データストリーム(CGP)接続(TCPポート:443)
SSL/TLSクライアント構成
VDAはSSL/TLSクライアントとして機能します。
Microsoftのグループポリシーとレジストリを使用して、暗号化印刷Webサービス接続(TCPポート:8443)でMicrosoft SCHANNEL SSPを構成します。Microsoft SCHANNEL SSPのレジストリ設定については、Microsoftのサポート記事TLS Registry Settingsを参照してください。
グループポリシーエディターを使用するVDA(Windows Server 2016またはWindows 10)上で、[コンピューターの構成]>[管理用テンプレート]>[ネットワーク]>[SSL構成設定]>[SSL暗号の順位] と移動します。以下の順に選択します:
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384_P384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384_P256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
注:
このグループポリシー設定が構成されている場合、暗号化印刷Webサービス接続(デフォルトポート:8443)が両方のSSL暗号の組み合わせ一覧に表示されているときのみ、VDAは暗号の組み合わせを選択します:
- グループポリシーのSSL暗号の組み合わせ順一覧
- 選択したSSL暗号の組み合わせポリシー設定(COM、GOV、またはALL)に関連した一覧
このグループポリシー構成は、VDA上の他のTLSアプリケーションおよびサービスにも影響します。アプリケーションが特定の暗号の組み合わせを必要とする場合、このグループポリシーの暗号の組み合わせ順一覧に追加することが必要な場合があります。
重要:
TLS構成のグループポリシーの変更は、オペレーティングシステムの再起動後にのみ有効になります。
Citrixポリシーを使用して暗号化印刷データストリーム(CGP)接続(TCPポート:443)のSSL/TLS設定を構成します。
SSL/TLSサーバー構成
ユニバーサルプリントサーバーは、SSL/TLSサーバーとして機能します。
Enable-UpsSsl.ps1
PowerShellスクリプトを使用してSSL/TLS設定を構成します。
ユニバーサルプリントサーバーにTLSサーバー証明書をインストールする
HTTPS接続を使用する場合、ユニバーサルプリントサーバーはサーバー証明書を使用することでTLS機能をサポートします。クライアント証明書はサポートしません。Microsoft Active Directory証明書サービスまたは他の証明機関を使用して、ユニバーサルプリントサーバーの証明書を要求します。
Microsoft Active Directory証明書サービスを使用して証明書を登録/要求する場合、次の点に注意してください:
- 証明書をローカルコンピューターの個人証明書ストアに配置します。
- 証明書のサブジェクト識別名(Subject DN)のコモンネーム属性をユニバーサルプリントサーバーの完全修飾ドメイン名(FQDN)に設定します。証明書テンプレートでこれを指定します。
- 証明書要求や秘密キーの生成に使用される暗号化サービスプロバイダー(CSP)をMicrosoft Enhanced RSAおよびAES Cryptographic Provider(暗号) に設定します。証明書テンプレートでこれを指定します。
- キーサイズを2048ビット以上に設定します。証明書テンプレートでこれを指定します。
ユニバーサルプリントサーバーでSSLを構成する
ユニバーサルプリントサーバー上のXTEサービスは、受信接続を待機します。SSLが有効な場合は、SSLサーバーとして機能します。受信接続には、印刷コマンドを含む印刷Webサービス接続と、印刷ジョブを含む印刷データストリーム接続の2種類があります。これらの接続でSSLを有効にできます。SSLはこれらの接続の機密性と完全性を保護します。デフォルトでは、SSLは無効になっています。
SSLの構成に使用されるPowerShellスクリプトはインストールメディアにあり、次のファイル名です:\Support\Tools\SslSupport\Enable-UpsSsl.ps1.
ユニバーサルプリントサーバーでリスニングポート番号を構成する
以下はXTEサービス用のデフォルトのポートです:
- クリアテキスト印刷Webサービス(HTTP)TCPポート:8080
- クリアテキスト印刷データストリーム(CGP)TCPポート:7229
- 暗号化印刷Webサービス(HTTPS)TCPポート:8443
- 暗号化印刷データストリーム(CGP)TCPポート:443
ユニバーサルプリントサーバー上のXTEサービスで使用されるポートを変更するには、管理者として次のPowerShellコマンドを実行します(Enable-UpsSsl.ps1 PowerShellスクリプトの使用に関する注意事項については後述を参照してください):
Stop-Service CitrixXTEServer, UpSvc
-
Enable-UpsSsl.ps1 -Enable -HTTPSPort <port> -CGPSSLPort <port>
またはEnable-UpsSsl.ps1 -Disable -HTTPPort <port> -CGPPort <port>
Start-Service CitrixXTEServer
ユニバーサルプリントサーバーのTLS設定
負荷分散構成で複数のユニバーサルプリントサーバーがある場合、すべてのユニバーサルプリントサーバー上で一貫したTLS設定を構成するようにしてください。
ユニバーサルプリントサーバー上にTLSを構成すると、インストールされているTLS証明書の権限が変更され、その証明書の秘密キーに対する読み取り権限がユニバーサルプリントサーバーに付与されます。ユニバーサルプリントサーバーには、以下の情報が提供されます:
- TLSで使用される証明書ストア内の証明書。
- TLS接続でどのTCPポートが使用されるのか。
Windowsファイアウォールを使用する環境では、これらのTCPポートでの受信接続が許可されている必要があります。Enable-UpsSsl.ps1 PowerShellスクリプトを使用する場合は、このファイアウォール規則が自動的に構成されます。
- どのバージョンのTLSプロトコルが許可されるのか。
ユニバーサルプリントサーバーはTLSプロトコルバージョン1.2、1.1、1.0をサポートしています。許可する最小バージョンを指定します。
デフォルトのTLSプロトコルバージョンは1.2です。
- どのTLS暗号の組み合わせが許可されるのか。
暗号の組み合わせにより、接続において使用する暗号化アルゴリズムが選択されます。VDAとユニバーサルプリントサーバーは、暗号の組み合わせのさまざまなセットをサポートできます。VDAが接続を開始して、サポートするTLS暗号の組み合わせの一覧を送信すると、ユニバーサルプリントサーバー側では、構成済みの暗号の組み合わせの一覧内にVDAのいずれかの暗号の組み合わせと一致するものがあるかどうかがチェックされます。一致した場合、接続が確立されます。一致する暗号の組み合わせがない場合、ユニバーサルプリントサーバーは接続を拒否します。
ユニバーサルプリントサーバーは、OPEN、FIPS、およびSP800-52ネイティブ暗号キットモードに対し、GOV(政府)、COM(商業)、ALLという以下の暗号の組み合わせをサポートします。使用できる暗号の組み合わせは、SSL FIPSモードポリシー設定やWindowsのFIPSモードによっても異なります。Windows FIPSモードについて詳しくは、Microsoftのサポート記事を参照してください。
暗号の組み合わせ(優先度の高い順) | OPEN ALL | OPEN COM | OPEN GOV | FIPS ALL | FIPS COM | FIPS GOV | SP800-52 ALL | SP800-52 COM | SP800-52 GOV |
---|---|---|---|---|---|---|---|---|---|
TLS_ECDHE_RSA_ AES256_GCM_SHA384 | X | X | X | X | X | X | |||
TLS_ECDHE_RSA_ AES256_CBC_SHA384 | X | X | X | X | X | X | |||
TLS_ECDHE_RSA_ AES256_CBC_SHA | X | X | X | X | X | X |
PowerShellスクリプトを使用したユニバーサルプリントサーバー上のTLS構成
証明書ストアの [ローカルコンピューター]>[個人]>[証明書] 領域にあるTLS証明書をインストールします。その場所に複数の証明書が存在する場合は、証明書の拇印をEnable-UpsSsl.ps1
PowerShellスクリプトに指定します。
注:
PowerShellスクリプトは、ユニバーサルプリントサーバーの完全修飾ドメイン名を基にして正しい証明書を見つけます。ユニバーサルプリントサーバーの完全修飾ドメイン名に1つの証明書のみが存在する場合は、証明書の拇印を指定する必要はありません。
Enable-UpsSsl.ps1
スクリプトはVDAからユニバーサルプリントサーバーへのTLS接続を有効または無効にします。このスクリプトは、インストールメディアの Support > Tools > SslSupport フォルダーに収録されています。
TLSを有効にすると、スクリプトはユニバーサルプリントサーバーのTCPポートで既存のWindowsファイアウォール規則をすべて無効にします。その後、XTEサービスがTLS TCPおよびUDPポートでのみ受信接続を受け入れることを許可する新しい規則を追加します。また、スクリプトにより以下のWindowsファイアウォール規則が無効になります:
- クリアテキスト印刷Webサービス接続(デフォルト:8080)
- クリアテキスト印刷データストリーム(CGP)接続(デフォルト:7229)
その結果、VDAはTLSを使用している場合にのみこれらの接続を確立できます。
注:
TLSを有効にしても、VDAからユニバーサルプリントサーバーへのWindows印刷スプーラーのRPC/SMB接続には影響しません。
重要:
最初のパラメーターとして、EnableかDisableのどちらかを指定します。CertificateThumbprintパラメーターは、ローカルコンピューターの個人証明書ストアの1つの証明書のみがユニバーサルプリントサーバーの完全修飾ドメイン名を持つ場合、オプションです。その他のパラメーターはオプションです。
構文
Enable-UpsSSL.ps1 -Enable [-HTTPPort <port>] [-CGPPort <port>] [–HTTPSPort <port>] [-CGPSSLPort <port>] [-SSLMinVersion <version>] [-SSLCipherSuite <name>] [-CertificateThumbprint <thumbprint>] [-FIPSMode <Boolean>] [-ComplianceMode <mode>]
Enable-UpsSSL.ps1 -Disable [-HTTPPort <portnum>] [-CGPPort <portnum>]
パラメーター | 説明 |
---|---|
有効化 | XTEサーバーでSSL/TLSを有効にします。このパラメーターまたはDisableパラメーターのいずれかを指定する必要があります。 |
無効化 | XTEサーバー上でSSL/TLSを無効にします。このパラメーターまたはEnableパラメーターのいずれかを指定する必要があります。 |
CertificateThumbprint "<thumbprint>"
|
ローカルコンピューターの個人証明書ストア内にあるTLS証明書の拇印を二重引用符で囲んで指定します。スクリプトは、指定された拇印によって使用する証明書を選択します。 |
HTTPPort <port>
|
クリアテキスト印刷Webサービス(HTTP/SOAP)ポート。デフォルト:8080 |
CGPPort <port>
|
クリアテキスト印刷データストリーム(CGP)ポート。デフォルト:7229 |
HTTPSPort <port>
|
暗号化印刷Webサービス(HTTPS/SOAP)ポート。デフォルト:8443 |
CGPSSLPort <port>
|
暗号化印刷データストリーム(CGP)ポート。デフォルト: 443 |
SSLMinVersion "<version>"
|
許可されるTLSプロトコルの最低バージョンを二重引用符で囲んで指定します。有効な値:“TLS_1.0”、“TLS_1.1”、“TLS_1.2”。デフォルト:TLS_1.2。 |
SSLCipherSuite “<name>”
|
TLS暗号の組み合わせパッケージの名前。二重引用符で囲みます。有効な値:“GOV”、“COM”、“ALL”(デフォルト)。 |
FIPSMode <Boolean>
|
XTEサーバーでFIPS 140モードを有効または無効にします。有効な値:$trueでFIPS 140モードを有効にし、$falseFIPS 140モードを無効にします。 |
例
次のスクリプトはTLSを有効にします。拇印(この例の場合、「12345678987654321」)を指定して、使用する証明書を選択します。
Enable-UpsSsl.ps1 –Enable -CertificateThumbprint "12345678987654321"
次のスクリプトはTLSを無効にします。
Enable-UpsSsl.ps1 –Disable
FIPSモードの構成
米国のFederal Information Processing Standards(FIPS)モードを有効にすると、FIPS 140準拠の暗号化のみがユニバーサルプリントサーバーの暗号化接続に使用されるようにできます。
クライアントでFIPSモードを構成する前に、サーバーでFIPSモードを構成してください。
Windows FIPSモードを有効/無効にする方法については、Microsoftのドキュメントサイトを参照してください。
クライアントでFIPSモードを有効にする
Delivery ControllerでCitrix Studioを実行して、Citrixポリシー設定 [SSL FIPSモード] をEnabledに設定します。Citrixポリシーを有効にします。
各VDAでこの操作を繰り返します:
- WindowsのFIPSモードを有効にします。
- VDAを再起動します。
サーバーでFIPSモードを有効にする
各ユニバーサルプリントサーバーでこの操作を繰り返します:
- WindowsのFIPSモードを有効にします。
- このPowerShellコマンドを管理者として実行します:
stop-service CitrixXTEServer, UpSvc
-
Enable-UpsSsl.ps1
スクリプトを-Enable -FIPSMode $true
パラメーターで実行します。 - ユニバーサルプリントサーバーを再起動します。
クライアントでFIPSモードを無効にする
Delivery ControllerでCitrix Studioを実行して、Citrixポリシー設定 [SSL FIPSモード] をDisabledに設定します。Citrixポリシーを有効にします。Citrixポリシー [SSL FIPSモード] 設定を削除することもできます。
各VDAでこの操作を繰り返します:
- WindowsのFIPSモードを無効にします。
- VDAを再起動します。
サーバーでFIPSモードを無効にする
各ユニバーサルプリントサーバーでこの操作を繰り返します:
- WindowsのFIPSモードを無効にします。
- このPowerShellコマンドを管理者として実行します:
stop-service CitrixXTEServer, UpSvc
-
Enable-UpsSsl.ps1
スクリプトを-Enable -FIPSMode $false
パラメーターで実行します。 - ユニバーサルプリントサーバーを再起動します。
SSL/TLSプロトコルバージョンを構成する
デフォルトのSSL/TLSプロトコルバージョンはTLS 1.2です。TLS 1.2は、実稼働環境で推奨される唯一のSSL/TLSプロトコルです。トラブルシューティングのためには、実稼働環境以外で一時的にSSL/TLSプロトコルバージョンの変更が必要な場合があります。
SSL 2.0とSSL 3.0は、ユニバーサルプリントサーバーではサポートされていません。
サーバーでSSL/TLSプロトコルバージョンを設定する
各ユニバーサルプリントサーバーでこの操作を繰り返します:
- このPowerShellコマンドを管理者として実行します:
stop-service CitrixXTEServer, UpSvc
-
Enable-UpsSsl.ps1
スクリプトを-Enable -SSLMinVersion
バージョンパラメーターで実行します。テストの終了後は、TLS 1.2に戻すことを忘れないようにしてください。 - ユニバーサルプリントサーバーを再起動します。
クライアントでSSL/TLSプロトコルバージョンを設定する
各VDAでこの操作を繰り返します:
-
Delivery Controllerでポリシー設定 [SSLプロトコルバージョン] を必要なプロトコルバージョンに設定して、ポリシーを有効にします。
-
Microsoft SCHANNEL SSPのレジストリ設定については、Microsoftのサポート記事TLS Registry Settingsを参照してください。レジストリ設定を使用して、クライアント側のTLS 1.0、TLS 1.1またはTLS 1.2を有効にします。
重要:
テストの終了後は、レジストリ設定を元の値に戻すのを忘れないでください。
-
VDAを再起動します。
トラブルシューティング
接続エラーが発生した場合は、C:\Program Files (x86)\Citrix\XTE\logs\error.logのユニバーサルプリントサーバーのログファイルをチェックしてください。
SSL/TLSハンドシェイクが失敗した場合は、このログファイルに「SSL handshake from client failed」というメッセージが表示されます。このような失敗は、VDAとユニバーサルプリントサーバーのSSL/TLSプロトコルバージョンが一致しない場合に発生することがあります。
ユニバーサルプリントサーバーのホスト名を含む次のポリシー設定でユニバーサルプリントサーバーの完全修飾ドメイン名を使用します:
- セッションプリンター
- プリンター割り当て
- 負荷分散のためのユニバーサルプリントサーバー
ユニバーサルプリントサーバーとVDAのシステムクロック(日付、時刻、およびタイムゾーン)が正しいことを確認してください。