フェデレーション認証サービスの秘密キー保護

はじめに

秘密キーはNetwork Serviceアカウントを使用して保存され、デフォルトでエクスポート不可としてマークされます。

秘密キーには2つの種類があります。

  • 登録機関(RA)証明書に関連付けられている、Citrix_RegistrationAuthority証明書テンプレートからの秘密キー
  • ユーザー証明書に関連付けられている、Citrix_SmartcardLogon証明書テンプレートからの秘密キー

RA証明書にはCitrix_RegistrationAuthority_ManualAuthorization(デフォルトで24時間有効)およびCitrix_RegistrationAuthority(デフォルトで2年間有効)の2つの種類があります。

FAS管理コンソールの初回セットアップの手順3で、管理者が[許可する]をクリックすると、FASサーバーによってキーペアが生成され、証明書署名要求(CSR)がCitrix_RegistrationAuthority_ManualAuthorization 証明書の証明機関(CA)に送信されます。これは一時的な証明書であり、デフォルトで24時間有効です。CAは自動的に証明書を発行しません。証明書を発行するには、管理者によるCAでの手動の権限許可が必要です。証明書がFASサーバーに発行されると、FASはCitrix_RegistrationAuthority_ManualAuthorization証明書を使用してCitrix_RegistrationAuthority 証明書(デフォルトで2年間有効)を自動的に取得します。FASサーバーは、Citrix_RegistrationAuthority証明書を取得するとすぐに、Citrix_RegistrationAuthority_ManualAuthorizationの証明書とキーを削除します。

RA証明書ポリシーは秘密キーを所有するものすべてに対して、テンプレートで構成されたユーザーセットに対する証明書要求の発行を許可するため、RA証明書に関連付けられた秘密キーは特に機密です。結果として、このキーを管理するものはだれでも、セット内のユーザーと同様、環境に接続できます。

次のいずれかを使用して、組織のセキュリティ要件に準拠して秘密キーが保護されるようにFASサーバーを構成できます:

  • Microsoft Enhanced RSA、AES Cryptographic Provider、またはMicrosoftソフトウェアキー記憶域プロバイダー(RA証明書およびユーザー証明書両方の秘密キー用)。
  • トラステッドプラットフォームモジュール(TPM)チップを使用したMicrosoftプラットフォームキー記憶域プロバイダー(RA証明書の秘密キー用)、およびMicrosoft Enhanced RSA、AES Cryptographic Provider、またはMicrosoftソフトウェアキー記憶域プロバイダー(ユーザー証明書の秘密キー用)。
  • ハードウェアセキュリティモジュール(HSM)ベンダーのHSMデバイスを使用した暗号サービスまたはキー記憶域プロバイダー(RA証明書およびユーザー証明書両方の秘密キー用)。

秘密キーの構成設定

3つのオプションのうちいずれかを使用してFASを構成します。テキストエディターを使用して、Citrix.Authentication.FederatedAuthenticationService.exe.configファイルを編集します。ファイルのデフォルトの場所はFASサーバーのProgram Files\Citrix\Federated Authentication Serviceフォルダーです。

ローカライズされた画像

FASは、サービスの起動時にのみ構成ファイルを読み込みます。いずれかの値が変更された場合、新しい設定を反映させるためにFASを再起動する必要があります。

Citrix.Authentication.FederatedAuthenticationService.exe.configファイルの関連する値を次のとおり設定します:

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderLegacyCsp(CAPIとCNG APIの切り替え)

コメント
true CAPI APIを使用
false(デフォルト) CNG APIを使用

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderName(使用するプロバイダーの名前)

コメント
Microsoft Enhanced RSAおよびAES Cryptographic Provider デフォルトはCAPIプロバイダーです
Microsoftソフトウェアキー記憶域プロバイダー デフォルトはCNGプロバイダーです
Microsoftプラットフォームキー記憶域プロバイダー デフォルトはTPMプロバイダーです。TPMはユーザーキーにはお勧めしません。TPMはRAキーにのみお使いください。FASサーバーを仮想化環境で実行する予定の場合は、TPMおよびハイパーバイザーのベンダーに仮想化がサポートされているかどうかを確認してください。
HSM_Vendor CSP/Key 記憶域プロバイダー HSMベンダーによって提供されます。値はベンダーによって異なります。FASサーバーを仮想化環境で実行する予定の場合は、HSMベンダーに仮想化がサポートされているかどうかを確認してください。

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.ProviderType(CAPI APIの場合のみ必要)

コメント
24 Default。Microsoft KeyContainerPermissionAccessEntry.ProviderType Property PROV_RSA_AES 24を参照します。CAPIでHSMを使用する場合、およびHSMベンダーで別のタイプを指定されている場合以外は、常に24である必要があります。

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyProtection(FASが秘密キー操作を実行する必要がある場合は、ここで使用されている値を使用します)。秘密キーの「エクスポート可能」フラグを制御します。ハードウェアでサポートされている場合は、TPMキーストレージの使用が許可されます。

コメント
NoProtection 秘密キーをエクスポートできます。
GenerateNonExportableKey Default。秘密キーをエクスポートできません。
GenerateTPMProtectedKey 秘密キーはTPMを使用して管理されます。秘密キーはProviderNameで指定したProviderName(例:Microsoftプラットフォームキー記憶域プロバイダー)を介して格納されます

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyLength(秘密キーのサイズをビット単位で指定)

コメント
2048 デフォルト値です。 1024または4096を使用することもできます。

構成ファイルの設定を以下に図解します(インストール時のデフォルト設定は赤で示しています):

ローカライズされた画像

構成シナリオの例

例1

この例では、Microsoftソフトウェアキー記憶域プロバイダーを使用して格納されているRA証明書の秘密キーおよびユーザー証明書の秘密キーについて説明します。

これはデフォルトのインストール後の構成です。追加の秘密キー構成は不要です。

例2

この例は、Microsoftプラットフォームキー記憶域プロバイダーを使用してFASサーバーのマザーボードのハードウェアTPMに格納されているRA証明書秘密キー、およびMicrosoftソフトウェアキー記憶域プロバイダーを使用して格納されているユーザー証明書秘密キーを示しています。

このシナリオでは、FASサーバーのマザーボード上のTPMはTPMの製造元のドキュメントに基づいてBIOSで有効化され、その後Windowsで初期化されているものとみなしています。詳しくは、https://technet.microsoft.com/en-gb/library/cc749022(v=ws.10).aspxを参照してください。

PowerShellの使用(推奨)

PowerShellを使用して、RA証明書をオフラインで要求できます。これは、CAがオンラインのCSRでRA証明書を発行しないようにする組織にお勧めです。FAS管理コンソールを使用してオフラインのRA CSRを行うことはできません。

手順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:RSAキーペアをFASサーバーのTPM内で生成し、FASサーバーで次のPowerShellコマンドレットを入力してCSRを作成します。注:一部のTPMではキーの長さが制限されます。デフォルトでは、証明書のキーの長さは2048ビットに制限されています。ハードウェアでサポートされているキーの長さを指定してください。

New-FasAuthorizationCertificateRequest -UseTPM $true -address

次に例を示します。

New-FasAuthorizationCertificateRequest -UseTPM $true -address fashsm.auth.net

以下が表示されます:

ローカライズされた画像

注:

  • Id GUID(この例では「5ac3d8bd-b484-4ebe-abf8-4b2cfd62ca39」)は後続の手順で必要です。
  • このPowerShellコマンドレットは、RA証明書の秘密キーの生成に使用される一時的な「上書き」と認識してください。
  • このコマンドレットを実行する場合、FASサービスが開始されるときに構成ファイルから読み込まれる値がチェックされ、使用するキーの長さが決定されます(デフォルトは2048です)。
  • この手動のPowerShellによって開始されるRA証明書秘密キー操作で-UseTPMが$trueに設定されているため、ファイルからの値でTPMの使用に必要な設定に一致しないものは無視されます。
  • このコマンドレットの実行によって、構成ファイルの設定が変更されることはありません。
  • FASで開始される後続のユーザー証明書秘密キー自動操作の実行中は、FASサービスが開始したときにファイルから読み込まれた値が使用されます。
  • FASサーバーがユーザー証明書を発行するときに構成ファイルでKeyProtection値をGenerateTPMProtectedKeyに設定して、TPMで保護されるユーザー証明書秘密キーを生成することもできます。

TPMがキーペアの生成に使用されたことを確認するには、FASサーバー上でキーペアが生成された時間のWindowsイベントビューアーのアプリケーションログをチェックします。

ローカライズされた画像

「[TPM:True]」を確認します。

ログは以下のように続きます:

ローカライズされた画像

「Provider: [CNG] Microsoft Platform Crypto Provider」を確認します。

手順6:証明書要求セクションをテキストエディターにコピーし、テキストファイルとしてディスクに保存します。

ローカライズされた画像

手順7:以下のコマンドをFASサーバーのPowerShellに入力して、CSRをCAに送信します:

certreq -submit -attrib “certificatetemplate:" 手順6の証明書要求ファイル>手順2の証明書テンプレート>

次に例を示します。

certreq -submit -attrib “certificatetemplate:Offline_RA” C:\Users\Administrator.AUTH\Desktop\usmcertreq.txt

以下が表示されます:

ローカライズされた画像

この時点で、「証明機関の一覧」ウィンドウが表示される可能性があります。この例のCAではhttp(上部)およびDCOM(下部)登録の両方が有効です。使用できる場合はDCOMオプションを選択します。

ローカライズされた画像

CAが指定されると、PowerShellによってRequestIDが表示されます。

ローカライズされた画像

手順8:CAサーバーのCA MMCスナップインで、[保留中の要求] をクリックします。要求ID を記録します。要求を右クリックし、[発行] を選択します。

手順9:[発行した証明書] ノードを選択します。発行したばかりの証明書(要求IDが一致する証明書)を見つけます。証明書をダブルクリックして開きます。[詳細] タブをクリックします。[ファイルへコピー] をクリックします。証明書のエクスポートウィザードが開きます。[次へ] をクリックします。次のファイル形式のオプションを選択します:

ローカライズされた画像

形式は「Cryptographic Message Syntax Standard- PKCS #7 証明書 (.P7B)」を選択し、「証明のパスにある証明書を可能であればすべて含む」をチェックする必要があります。

手順10:エクスポートされた証明書をFASサーバーにコピーします。

手順11:FASサーバー上で次のPowerShellコマンドレットを入力して、RA証明書をFASサーバーレジストリにインポートします:

ローカライズされた画像

次に例を示します。

ローカライズされた画像

以下が表示されます:

ローカライズされた画像

手順12:FAS管理コンソールを終了して再起動します。

ローカライズされた画像

手順「このサービスを許可する」が緑色になり、表示が「このサービスの許可を取り消す」に変更されます。下部のエントリには、「認証元: オフラインCSR」と表示されます。

手順13: FAS管理コンソールで [ユーザーロール] タブを選択し、メインのFAS記事の記述に従って設定を編集します。

:管理コンソールからFASの許可を取り消すと、ユーザー規則が削除されます。

FAS管理コンソールの使用

FAS管理コンソールではオフラインCSRを行うことができないため、組織でRA証明書のオンラインCSRが許可されない限り、FAS管理コンソールの使用はお勧めしません。

FASの初回のセットアップ手順の実行中、証明書テンプレートを展開してCAをセットアップした後、サービスを許可(構成順序の手順3)する前に次を行います:

手順1:以下の行を次のとおり変更して、構成ファイルを編集します:

ローカライズされた画像

ファイルは以下のように表示されます:

ローカライズされた画像

一部のTPMではキーの長さが制限されています。デフォルトのキーの長さは、2048ビットです。ハードウェアでサポートされているキーの長さを指定してください。

手順2:サービスを許可します。

手順3:CAサーバーから、保留中の証明書要求を手動で発行します。RA証明書が取得されたら、管理コンソールのセットアップ順序の手順3が緑色に変わります。この時点で、RA証明書の秘密キーはTPMで生成されています。証明書はデフォルトで2年間有効です。

手順4:次のように構成ファイルを編集し直します:

ローカライズされた画像

:FASはTPMで保護されたキーでユーザー証明書を生成できますが、TPMは大規模の展開には速度が遅すぎる可能性があります。

手順5: Citrixフェデレーション認証サービスを再起動します。これにより、サービスによる構成ファイルの再読み込みが強制され、変更された値が反映されます。後続の自動秘密キー操作はユーザー証明書キーに影響します。これらの操作ではTPMに秘密キーが保存されませんが、Microsoftソフトウェアキー記憶域プロバイダーが使用されます。

手順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を使用している場合、プロバイダーはドキュメントで暗号化サービスプロバイダー(CSP)と記述されている可能性があります。HSMがCNGを使用している場合、プロバイダーはキー記憶域プロバイダー(KSP)と記述されている可能性があります。

手順3:構成ファイルを次のように編集します:

ローカライズされた画像

ファイルは以下のように表示されます:

ローカライズされた画像

このシナリオでは、HSMがCNGを使用していると想定しているため、ProviderLegacyCspの値はfalseに設定されています。HSMがCAPIを使用している場合は、ProviderLegacyCspの値はtrueに設定されます。HSMベンダーのドキュメントで、HSMがCAPICNとCNGのどちらを使用しているかを確認してください。また、非対称RSAキー生成でサポートされているキーの長さについても、HSMベンダーのドキュメントで確認してください。この例では、キーの長さはデフォルトの2048ビットに設定されています。指定したキーの長さがお使いのハードウェアでサポートされていることを確認してください。

手順4:Citrixフェデレーション認証サービスを再起動して、構成ファイルからの値を読み込みます。

手順5:HSM内でRSAキーペアを生成し、FAS管理コンソールの初回セットアップタブで [許可する] をクリックしてCSRを作成します。

手順6:Windowsイベントログのアプリケーションエントリをチェックして、キーペアがHSM内で生成されていることを確認します。

ローカライズされた画像

注: [Provider: [CNG] HSM_Vendor’s Key Storage Provider]となっています。

手順7:CAサーバーのCA MMCで、[保留中の要求] ノードを選択します。

ローカライズされた画像

要求を右クリックし、[発行] を選択します。

手順「このサービスを許可する」が緑色になり、表示が「このサービスの許可を取り消す」に変更されます。下部のエントリには、「認証元: [\]」と表示されます。

ローカライズされた画像

手順8:FAS管理コンソールで [ユーザーロール] タブを選択し、メインのFAS記事の記述に従って設定を編集します。

注: 管理コンソールからFASの許可を取り消すと、ユーザー規則が削除されます。

FAS証明書ストレージ

FASでは、証明書の保存にFASサーバー上のMicrosoft証明書ストアを使用しません。FASではレジストリを使用します。

注: 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

ローカライズされた画像

関連情報

フェデレーション認証サービスの秘密キー保護