フェデレーション認証サービス秘密鍵の保護
はじめに
証明書はFASサーバーのレジストリに保存されます。関連付けられた秘密鍵は、FASサーバーのNetwork Serviceアカウントによって保存され、デフォルトでエクスポート不可としてマークされます。
秘密鍵には2種類あります:
- 登録機関(RA)証明書に関連付けられた秘密鍵(Citrix_RegistrationAuthority証明書テンプレートからのもの)。
- ユーザー証明書に関連付けられた秘密鍵(Citrix_SmartcardLogon証明書テンプレートからのもの)。
There are actually two RA certificates: Citrix_RegistrationAuthority_ManualAuthorization (valid for 24 hours by default) and Citrix_RegistrationAuthority (valid for two years by default).
FAS管理コンソールの初期設定のステップ3で、管理者が「承認」をクリックすると、FASサーバーはキーペアを生成し、Citrix_RegistrationAuthority_ManualAuthorization証明書のためにCAに証明書署名要求(CSR)を送信します。これは一時的な証明書で、デフォルトで24時間有効です。CAはこの証明書を自動的に発行しません。その発行は、管理者によってCA上で手動で承認される必要があります。証明書がFASサーバーに発行されると、FASはCitrix_RegistrationAuthority_ManualAuthorization証明書を使用して、Citrix_RegistrationAuthority証明書(デフォルトで2年間有効)を自動的に取得します。FASサーバーは、Citrix_RegistrationAuthority証明書を取得するとすぐに、Citrix_RegistrationAuthority_ManualAuthorizationの証明書とキーを削除します。
RA証明書に関連付けられた秘密鍵は特に機密性が高く、そのRA証明書ポリシーにより、秘密鍵を所有する者は、テンプレートで構成されたユーザーセットに対して証明書要求を発行できるためです。その結果、このキーを制御する者は、そのセット内の任意のユーザーとして環境に接続できます。
FASサーバーを構成して、組織のセキュリティ要件に合った方法で秘密鍵を保護できます。次のいずれかを使用します:
- Microsoft Enhanced RSA and AES Cryptographic Provider or Microsoft Software Key Storage Provider for both the RA certificate and the user certificates’ private keys.
- RA証明書の秘密鍵にはTrusted Platform Module (TPM) チップを搭載したMicrosoft プラットフォーム キー ストレージ プロバイダーを、ユーザー証明書の秘密鍵にはMicrosoft Enhanced RSA および AES 暗号化プロバイダーまたはMicrosoft ソフトウェア キー ストレージ プロバイダーを使用します。
- RA証明書とユーザー証明書の秘密鍵の両方に、HSMデバイスとともにハードウェアセキュリティモジュール(HSM)ベンダーの暗号化サービスまたはキーストレージプロバイダーを使用します。
秘密鍵の構成に関する設定
FASを3つのオプションのいずれかを使用するように構成します。テキストエディターを使用して、Citrix.Authentication.FederatedAuthenticationService.exe.configファイルを編集してください。このファイルの既定の場所は、FASサーバー上のProgram Files\Citrix\Federated Authentication Serviceフォルダー内にあります。

FAS は、サービスが起動したときにのみ構成ファイルを読み取ります。値が変更された場合、新しい設定を反映させるには FAS を再起動する必要があります。
Set the relevant values in the Citrix.Authentication.FederatedAuthenticationService.exe.config file as follows:
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderLegacyCsp (switch between CAPI and CNG APIs)
| 値 | コメント |
|---|---|
| 真 | CAPI API を使用する |
| false (デフォルト) | CNG API を使用する |
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderName (name of the provider to use)
| 値 | コメント |
|---|---|
| マイクロソフト エンハンスド RSA アンド AES クリプトグラフィック プロバイダー | デフォルトの CAPI プロバイダー |
| Microsoft ソフトウェアキー記憶域プロバイダー | デフォルトのCNGプロバイダー |
| Microsoft プラットフォームキー記憶域プロバイダー | デフォルトのTPMプロバイダー。TPMはユーザーキーには推奨されないことに注意してください。RAキーにのみTPMを使用してください。FASサーバーを仮想化環境で実行する予定がある場合は、仮想化がサポートされているかどうかをTPMおよびハイパーバイザーベンダーに確認してください。 |
| HSM_ベンダーCSP/キー記憶域プロバイダー | HSMベンダーによって提供されます。値はベンダーによって異なります。FASサーバーを仮想化環境で実行する予定がある場合は、仮想化がサポートされているかどうかをHSMベンダーに確認してください。 |
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderType (Required only in case of CAPI API)
| 値 | コメント |
|---|---|
| 24 | 既定です。Microsoft KeyContainerPermissionAccessEntry.ProviderType Property PROV_RSA_AES 24 を参照します。CAPI を使用したハードウェアセキュリティモジュール (HSM) を使用しており、ハードウェアセキュリティモジュール (HSM) ベンダーが別途指定しない限り、常に 24 である必要があります。 |
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyProtection (FASが秘密鍵操作を実行する必要がある場合、ここで指定された値を使用します) 秘密鍵の「エクスポート可能」フラグを制御します。ハードウェアでサポートされている場合、TPMキー記憶域の使用を許可します。
| 値 | コメント |
|---|---|
| 保護なし | 秘密キーはエクスポートできます。 |
| エクスポート不可キーの生成 | デフォルト。秘密キーはエクスポートできません。 |
| TPM保護キーの生成 | 秘密キーはTPMを使用して管理されます。秘密キーは、ProviderNameで指定したプロバイダー名を介して保存されます (例: Microsoft Platform Key Storage Provider)。 |
Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyLength (Specify size of private key in bits)
| 値 | コメント |
|---|---|
| 2048 | デフォルト。1024または4096も使用できます。 |
構成ファイルの設定は、次のようにグラフィカルに表示されます(インストール時のデフォルトは赤で表示されています)。

構成シナリオの例
例 1
この例では、Microsoft Software Key Storage Providerを使用して保存されたRA証明書の秘密キーとユーザー証明書の秘密キーについて説明します。
これは、インストール後の既定の構成です。追加の秘密キー構成は必要ありません。
例 2
この例では、RA証明書の秘密キーがMicrosoft Platform Key Storage Providerを介してFASサーバーのマザーボードのハードウェアTPMに保存され、ユーザー証明書の秘密キーがMicrosoft Software Key Storage Providerを使用して保存される様子を示します。
このシナリオでは、FASサーバーのマザーボード上のTPMが、TPM製造元のドキュメントに従ってBIOSで有効にされ、Windowsで初期化されていることを前提としています。https://docs.microsoft.com/ja-jp/previous-versions/windows/it-pro/windows-vista/cc749022(v=ws.10)?redirectedfrom=MSDNを参照してください。
パワーシェルの使用(推奨)
RA証明書は、PowerShellを使用してオフラインで要求できます。これは、CAがオンラインCSRを介してRA証明書を発行することを望まない組織に推奨されます。オフラインRA CSRは、FAS管理コンソールを使用して作成することはできません。
手順 1: 管理コンソールを使用してFAS構成を初期設定する際に、「証明書テンプレートの展開」と「証明機関のセットアップ」の最初の2つの手順のみを完了します。

手順 2: CAサーバーで、証明書テンプレートMMCスナップインを追加します。Citrix_RegistrationAuthority_ManualAuthorizationテンプレートを右クリックし、テンプレートの複製を選択します。
全般タブを選択します。名前と有効期間を変更します。この例では、名前はOffline_RAで、有効期間は2年です。

手順 3: CAサーバーで、CA MMCスナップインを追加します。証明書テンプレートを右クリックします。新規を選択し、発行する証明書テンプレートをクリックします。作成したばかりのテンプレートを選択します。
手順 4: FASサーバーで次のPowerShellコマンドレットをロードします。
Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1
手順 5: FASサーバーで次のPowerShellコマンドレットを入力して、FASサーバーのTPM内にRSAキーペアを生成し、CSRを作成します。注: 一部のTPMはキー長を制限します。既定のキー長は2048ビットです。ハードウェアでサポートされているキー長を指定してください。
New-FasAuthorizationCertificateRequest -UseTPM $true -address <FQDN of FAS Server>
例えば、次のようになります。
New-FasAuthorizationCertificateRequest -UseTPM $true -address fashsm.auth.net
以下が表示されます:

注:
- ID GUID(この例では「5ac3d8bd-b484-4ebe-abf8-4b2cfd62ca39」)は、次の手順で必要になります。
- このPowerShellコマンドレットは、RA証明書の秘密キーを生成するために使用される1回限りの「上書き」であると考えてください。
- このコマンドレットを実行すると、FASサービスが開始されたときに構成ファイルから読み取られた値が、使用するキーの長さを決定するためにチェックされます(デフォルトは2048です)。
- この手動のPowerShellで開始されたRA証明書の秘密キー操作では、-UseTPMが$trueに設定されているため、システムはTPMを使用するために必要な設定と一致しないファイルからの値を無視します。
- このコマンドレットを実行しても、構成ファイルの設定は変更されません。
- その後の自動FAS開始ユーザー証明書秘密キー操作中に、FASサービスが開始されたときにファイルから読み取られた値が使用されます。
- FASサーバーがユーザー証明書を発行する際に、TPMで保護されたユーザー証明書の秘密キーを生成するために、構成ファイルのKeyProtection値をGenerateTPMProtectedKeyに設定することも可能です。
TPMがキーペアの生成に使用されたことを確認するには、キーペアが生成された時点のFASサーバーのWindowsイベントビューアーのアプリケーションログを確認してください。

「[TPM: True]」に注意してください。
続いて:

注記: 「プロバイダー: [CNG] マイクロソフト プラットフォーム 暗号プロバイダー」
手順6: 証明書要求セクションをテキストエディターにコピーし、テキストファイルとしてディスクに保存します。

手順7: FASサーバーでPowerShellに以下を入力して、CSRをCAに送信します。
certreq -submit -attrib “certificatetemplate:<ステップ2の証明書テンプレート>” <ステップ6の証明書要求ファイル>
例えば:
certreq -submit -attrib “certificatetemplate:Offline_RA” C:\Users\Administrator.AUTH\Desktop\usmcertreq.txt
以下が表示されます:

この時点で、証明機関リストウィンドウが表示される場合があります。この例のCAは、http(上)とDCOM(下)の両方の登録が有効になっています。利用可能な場合は、DCOMオプションを選択してください。

CAが指定されると、PowerShellはRequestIDを表示します。

ステップ 8: CAサーバーで、CA MMCスナップインのPending Requestsをクリックします。要求IDをメモします。次に、要求を右クリックして、Issueを選択します。
ステップ 9: Issued Certificatesノードを選択します。発行されたばかりの証明書を見つけます(要求IDが一致するはずです)。ダブルクリックして証明書を開きます。Detailsタブを選択します。Copy to Fileをクリックします。証明書のエクスポートウィザードが起動します。Nextをクリックします。ファイル形式について、以下のオプションを選択します。

形式は「暗号メッセージ構文標準 – PKCS #7 証明書 (.P7B)」であり、「可能な場合は証明書パス内のすべての証明書を含める」がチェックされている必要があります。
ステップ 10: エクスポートした証明書ファイルをFASサーバーにコピーします。
ステップ 11: FASサーバーで次のPowerShellコマンドレットを入力して、RA証明書をFASサーバーのレジストリにインポートします。

以下に例を示します。

次のように表示されます。

ステップ 12: FAS管理コンソールを閉じてから再起動します。

「Authorize this Service」のステップが緑色に変わり、「Deauthorize this Service」と表示されていることに注意してください。下の項目には「Authorized by: Offline CSR」と表示されます。
ステップ13: FAS管理コンソールでユーザー役割タブを選択し、メインのFAS記事に記載されている設定を編集します。
注: 管理コンソールからFASの認証を解除すると、ユーザー規則が削除されます。
FAS管理コンソールの使用
FAS管理コンソールはオフラインCSRを実行できないため、組織がRA証明書のオンラインCSRを許可しない限り、その使用は推奨されません。
FASの初期設定手順を実行する際、証明書テンプレートを展開し、CAを設定した後、サービスを承認する前(構成シーケンスのステップ3)に、次の操作を行います。
ステップ1: 以下の行を次のように変更して、構成ファイルを編集します。

ファイルは次のようになります。

一部のTPMはキーの長さを制限します。デフォルトのキー長は2048ビットです。ハードウェアでサポートされているキー長を指定してください。
ステップ2: サービスを承認します。
ステップ3: CAサーバーから保留中の証明書要求を手動で発行します。RA証明書が取得されると、管理コンソールのセットアップシーケンスのステップ3が緑色になります。この時点で、RA証明書の秘密キーがTPMで生成されます。証明書はデフォルトで2年間有効です。
ステップ4: 構成ファイルを次のように元に戻します。

注: FASはTPMで保護されたキーを持つユーザー証明書を生成できますが、TPMハードウェアは大規模な展開には遅すぎる場合があります。
ステップ5: Citrix Federated Authentication Serviceを再起動します。これにより、サービスは構成ファイルを再読み込みし、変更された値を反映します。その後の自動秘密鍵操作はユーザー証明書キーに影響を与えます。これらの操作は秘密鍵をTPMに保存せず、Microsoft Software Key Storage Providerを使用します。
ステップ6: FAS管理コンソールで[ユーザーロール]タブを選択し、メインのFAS記事に記載されているとおりに設定を編集します。
注: 管理コンソールからFASの認証を解除すると、ユーザー規則が削除されます。
3番目の例
この例では、HSMに保存されているRA証明書の秘密鍵とユーザー証明書の秘密鍵について説明します。この例では、HSMが構成されていることを前提としています。HSMには、たとえば「HSM_Vendor’s Key Storage Provider」のようなプロバイダー名があります。
仮想化環境でFASサーバーを実行する予定がある場合は、ハイパーバイザーのサポートについてHSMベンダーに確認してください。
ステップ1。 管理コンソールを使用してFAS構成を初期設定する際に、最初の2つのステップ(「証明書テンプレートの展開」と「証明機関のセットアップ」)のみを完了します。

ステップ2: HSMベンダーのドキュメントを参照して、HSMのProviderName値が何であるべきかを判断してください。HSMがCAPIを使用している場合、プロバイダーはドキュメントでCryptographic Service Provider (CSP)として参照されることがあります。HSMがCNGを使用している場合、プロバイダーはKey Storage Provider (KSP)として参照されることがあります。
ステップ3: 構成ファイルを次のように編集します。

ファイルは次のようになります。

このシナリオでは、HSMがCNGを使用しているため、ProviderLegacyCsp値はfalseに設定されています。HSMがCAPIを使用している場合、ProviderLegacyCsp値はtrueに設定する必要があります。HSMがCAPIとCNGのどちらを使用しているかを判断するには、HSMベンダーのドキュメントを参照してください。また、非対称RSA鍵生成でサポートされている鍵長については、HSMベンダーのドキュメントを参照してください。この例では、鍵長はデフォルトの2048ビットに設定されています。指定する鍵長がハードウェアでサポートされていることを確認してください。
ステップ4: Citrix Federated Authentication Serviceを再起動して、構成ファイルから値を読み取ります。
手順5:FAS管理コンソールのInitial SetupタブでAuthorizeをクリックして、HSM内でRSAキーペアを生成し、CSRを作成します。
手順6:キーペアがHSMで生成されたことを確認するには、Windowsイベントログのアプリケーションエントリを確認します。
ローカライズされた画像(/ja-jp/xenapp-and-xendesktop/7-15-ltsr/media/fas-privatekeys-eventlog-hsm.png)
注: [プロバイダー: [CNG] HSMベンダーのキーストレージプロバイダー]
手順7: CAサーバーで、CA MMCの保留中の要求ノードを選択します。
ローカライズされた画像(/ja-jp/xenapp-and-xendesktop/7-15-ltsr/media/fas-privatekeys-cammc-pendingrequests.png)
要求を右クリックし、Issueを選択します。
「Authorize this Service」という手順が緑色になり、現在は「Deauthorize this Service」と表示されていることに注意してください。以下のエントリには「Authorized by: [<CA Name>]」と表示されます。
ローカライズされた画像(/ja-jp/xenapp-and-xendesktop/7-15-ltsr/media/fas-privatekeys-startup-threestep2.png)
手順8:FAS管理コンソールでUser Rolesタブを選択し、メインのFAS記事に記載されているとおりに設定を編集します。
注:管理コンソールを介してFASの承認を取り消すと、ユーザー規則が削除されます。
FAS証明書ストレージ
FASは、証明書を保存するためにFASサーバー上のMicrosoft証明書ストアを使用しません。レジストリを使用します。
注:秘密キーを保存するためにHSMを使用する場合、HSMコンテナはGUIDで識別されます。HSM内の秘密キーのGUIDは、レジストリ内の対応する証明書のGUIDと一致します。
RA証明書のGUIDを特定するには、FASサーバーで次のPowerShellコマンドレットを入力します。
Add-pssnapin Citrix.a*
Get-FasAuthorizationCertificate –address <FAS server FQDN>
例えば:
Get-FasAuthorizationCertificate –address cg-fas-2.auth.net

ユーザー証明書のリストを取得するには、次を入力します:
Get-FasUserCertificate –address <FAS server FQDN>
例えば:
Get-FasUserCertificate –address cg-fas-2.auth.net

関連する情報
- フェデレーション認証サービスの記事は、FASのインストールと構成に関する主要なリファレンスです。
- 一般的なFAS展開は、フェデレーション認証サービスアーキテクチャの概要の記事にまとめられています。
- その他の「ハウツー」記事は、フェデレーション認証サービスの構成と管理の記事で紹介されています。