プライベートキーの保護

はじめに

  • 証明書はFASサーバー上の組み込みデータベースに保存されます。関連するプライベートキーは、FASサーバーのNetwork Serviceアカウントによって保存され、デフォルトでエクスポート不可としてマークされます。

プライベートキーには2つの種類があります。

  • Citrix_RegistrationAuthority証明書テンプレートからの、登録機関証明書に関連付けられたプライベートキー。
  • Citrix_SmartcardLogon証明書テンプレートからの、ユーザー証明書に関連付けられたプライベートキー。

  • 実際には、2つの登録機関証明書があります。Citrix_RegistrationAuthority_ManualAuthorization(デフォルトで24時間有効)とCitrix_RegistrationAuthority(デフォルトで2年間有効)です。

Federated Authentication Service (FAS) 管理コンソールのInitial Setupタブのステップ3で、Authorizeをクリックすると、FASサーバーはキーペアを生成し、Citrix_RegistrationAuthority_ManualAuthorization証明書の証明書署名要求を証明機関に送信します。これは一時的な証明書で、デフォルトで24時間有効です。証明機関はこの証明書を自動的に発行しません。その発行は、証明機関で管理者によって手動で承認される必要があります。証明書がFASサーバーに発行されると、FASはCitrix_RegistrationAuthority_ManualAuthorization証明書を使用して、Citrix_RegistrationAuthority証明書(デフォルトで2年間有効)を自動的に取得します。FASサーバーは、Citrix_RegistrationAuthority証明書を取得するとすぐに、Citrix_RegistrationAuthority_ManualAuthorizationの証明書とキーを削除します。

登録機関証明書に関連付けられたプライベートキーは特に機密性が高く、登録機関証明書ポリシーにより、プライベートキーを所有する者は、テンプレートで構成されたユーザーセットに対して証明書要求を発行できるためです。結果として、このキーを制御する者は、セット内の任意のユーザーとして環境に接続できます。

組織のセキュリティ要件に合うようにプライベートキーを保護するために、FASサーバーを次のいずれかの方法で構成できます。

  • 登録機関証明書とユーザー証明書のプライベートキーの両方に、Microsoft Enhanced RSA and AES Cryptographic ProviderまたはMicrosoft Software Key Storage Providerを使用。
  • 登録機関証明書のプライベートキーにはTrusted Platform Module (TPM) チップを備えたMicrosoft Platform Key Storage Providerを、ユーザー証明書のプライベートキーにはMicrosoft Enhanced RSA and AES Cryptographic ProviderまたはMicrosoft Software Key Storage Providerを使用。
  • 登録機関証明書とユーザー証明書のプライベートキーの両方に、HSMデバイスを備えたHardware Security Module (HSM) ベンダーのCryptographic ServiceまたはKey Storage Providerを使用。

プライベートキーの構成設定

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

localized image

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 and AES Cryptographic Provider デフォルトのCAPIプロバイダー
Microsoft Software Key Storage Provider デフォルトのCNGプロバイダー
Microsoft Platform Key Storage Provider デフォルトのTPMプロバイダー。TPMはユーザーキーには推奨されません。登録機関キーにのみTPMを使用してください。仮想化環境でFASサーバーを実行する予定がある場合は、仮想化がサポートされているかどうかをTPMおよびハイパーバイザーベンダーに確認してください。
HSM_Vendor CSP/Key Storage Provider HSMベンダーによって提供されます。値はベンダーによって異なります。仮想化環境でFASサーバーを実行する予定がある場合は、仮想化がサポートされているかどうかをHSMベンダーに確認してください。

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

コメント
24 デフォルト。Microsoft KeyContainerPermissionAccessEntry.ProviderTypeプロパティPROV_RSA_AES 24を指します。CAPIでHSMを使用しており、HSMベンダーが別途指定しない限り、常に24である必要があります。

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

コメント
NoProtection プライベートキーはエクスポートできます。
GenerateNonExportableKey デフォルト。プライベートキーはエクスポートできません。
GenerateTPMProtectedKey プライベートキーはTPMを使用して管理されます。プライベートキーはProviderNameで指定したProviderName(例:Microsoft Platform Key Storage Provider)を介して保存されます。

Citrix.TrustFabric.ClientSDK.TrustAreaJoinParameters.KeyLength (プライベートキーのサイズをビット単位で指定します)

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

構成ファイルの設定は、次のようにグラフィカルに表現されます(インストール時のデフォルトは赤で表示)。

localized image

構成シナリオの例

例1

この例では、Microsoft Software Key Storage Providerを使用して保存された登録機関証明書のプライベートキーとユーザー証明書のプライベートキーについて説明します。

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

例 2

この例では、登録機関証明書の秘密鍵がMicrosoft Platform Key Storage Providerを介してFASサーバーマザーボードのハードウェアTPMに保存され、ユーザー証明書の秘密鍵がMicrosoft Software Key Storage Providerを使用して保存されることを示します。

このシナリオでは、FASサーバーマザーボード上のTPMが、TPM製造元のドキュメントに従ってBIOSで有効にされ、その後Windowsで初期化されていることを前提としています。詳細については、https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-vista/cc749022(v=ws.10) を参照してください。

FAS管理コンソールの使用

FAS管理コンソールはオフラインの証明書署名要求を実行できないため、組織が登録機関証明書に対してオンラインの証明書署名要求を許可しない限り、その使用は推奨されません。

FASの初期設定を実行する際、証明書テンプレートを展開し、証明書機関を設定した後、サービスを承認する前(構成シーケンスのステップ3)に、次の手順を実行します。

ステップ1: 構成ファイルを編集し、次の行を次のように変更します。

ローカライズされた画像

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

ローカライズされた画像

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

ステップ2: Citrix Federated Authentication Serviceを再起動し、構成ファイルから値を読み取ります。

ステップ3: サービスを承認します。

ステップ4: 証明書機関サーバーから保留中の証明書要求を手動で発行します。登録機関証明書が取得されると、管理コンソールのセットアップシーケンスのステップ3が緑色になります。この時点で、登録機関証明書の秘密キーはTPMで生成されています。証明書はデフォルトで2年間有効です。

登録機関証明書の秘密キーがTPMに正しく保存されていることを確認するには、次のPowerShellコマンドを使用します。登録機関証明書の秘密キーがTPMに保存されている場合、PrivateKeyProviderフィールドは Microsoft Platform Crypto Provider に設定されます。

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1
Get-FasAuthorizationCertificate -FullCertInfo -Address localhost
<!--NeedCopy-->

ステップ5: 構成ファイルを次のように元に戻します。

ローカライズされた画像

注:

FASはTPMで保護されたキーを持つユーザー証明書を生成できますが、大規模な展開ではTPMハードウェアが遅すぎる場合があります。

ステップ6: FASを再起動します。これにより、サービスは構成ファイルを再読み込みし、変更された値を反映します。その後の自動秘密キー操作はユーザー証明書キーに影響を与えます。これらの操作は秘密キーをTPMに保存せず、Microsoft Software Key Storage Providerを使用します。

ステップ7: FAS管理コンソールで [ルール] タブを選択し、インストールと構成に記載されているとおりに設定を編集します。

PowerShellの使用

登録機関証明書は、PowerShellを使用してオフラインで要求できます。これは、証明書機関がオンラインの証明書署名要求を介して登録機関証明書を発行することを望まない組織に適しています。FAS管理コンソールを使用してオフラインの登録機関証明書署名要求を作成することはできません。

ステップ1: 管理コンソールを使用してFASの初期構成を行う際、「証明書テンプレートの展開」と「証明書機関のセットアップ」の最初の2つのステップのみを完了します。

ローカライズされた画像

ステップ2: 証明書機関サーバーで、証明書テンプレートMMCスナップインを追加します。Citrix_RegistrationAuthority_ManualAuthorizationテンプレートを右クリックし、[テンプレートの複製] を選択します。

[全般] タブを選択します。名前と有効期間を変更します。この例では、名前は Offline_RA で、有効期間は2年です。

ローカライズされた画像

ステップ3: 証明書機関サーバーで、証明書機関MMCスナップインを追加します。[証明書テンプレート] を右クリックします。[新規] を選択し、[発行する証明書テンプレート] をクリックします。作成したばかりのテンプレートを選択します。

ステップ4: FASサーバーで次のPowerShellコマンドレットをロードします。

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1

ステップ5: FASサーバーのTPM内でRSAキーペアを生成し、FASサーバーで次のPowerShellコマンドレットを入力して証明書署名要求を作成します。注: 一部の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コマンドレットは、登録機関証明書の秘密キーを生成するために使用される1回限りの「オーバーライド」と考えてください。
  • このコマンドレットを実行すると、FASの起動時に構成ファイルから読み取られた値がチェックされ、使用するキー長(デフォルトは2048)が決定されます。
  • この手動のPowerShellで開始された登録機関証明書の秘密キー操作では、-UseTPMが$trueに設定されているため、システムはTPMを使用するために必要な設定と一致しないファイルからの値を無視します。
  • このコマンドレットを実行しても、構成ファイルの設定は変更されません。
  • その後の自動FAS開始のユーザー証明書秘密キー操作では、FASの起動時にファイルから読み取られた値が使用されます。
  • FASサーバーがユーザー証明書を発行する際に、ユーザー証明書の秘密キーをTPMで保護するために、構成ファイルのKeyProtection値をGenerateTPMProtectedKeyに設定することも可能です。

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

ローカライズされた画像

注: 「[TPM: True]」

Followed by:

localized image

Note: “Provider: [CNG] Microsoft Platform Crypto Provider”

Step 6: Copy the certificate request section into a text editor and save it to disk as a text file.

  • localized image

Step 7: Submit the certificate signing request to your certificate authority by typing the following into PowerShell on the FAS server:

certreq -submit -attrib "certificatetemplate:\<certificate template from step 2>" \<certificate request file from step 6>

For example:

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

The following is displayed:

localized image

At this point a Certification Authority List window might appear. The certificate authority in this example has both http (top) and DCOM (bottom) enrolment enabled. Select the DCOM option, if available:

localized image

After the certificate authority has been specified, PowerShell displays the RequestID:

localized image

Step 8: On the certificate authority server, in the certificate authority MMC snap-in, click Pending Requests. Note the Request ID. Then right-click the request and choose Issue.

Step 9: Select the Issued Certificates node. Find the certificate that was just issued (the Request ID should match). Double-click to open the certificate. Select the Details tab. Click Copy to File. The Certificate Export Wizard launches. Click Next. Choose the following options for the file format:

localized image

The format must be “Cryptographic Message Syntax Standard – PKCS #7 Certificates (.P7B)” and “Include all certificates in the certification path if possible” must be selected.

Step 10: Copy the exported certificate file onto the FAS server.

Step 11: Import the registration authority certificate into the FAS server by entering the following PowerShell cmdlet on the FAS server:

localized image

For example:

localized image

The following is displayed:

localized image

To confirm that the registration authority certificate’s private key is correctly being stored in the TPM, use the following PowerShell commands. The PrivateKeyProvider field will be set to Microsoft Platform Crypto Provider if the registration authority certificate’s private key is stored in the TPM:

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1
Get-FasAuthorizationCertificate -FullCertInfo -Address localhost
<!--NeedCopy-->

Step 12: Close the FAS administration console and then restart it.

localized image

Note: The step “Authorize this service” has a green tick.

Step 13: Select the Rules tab in the FAS administration console and edit the settings described in Install and configure.

Example 3

This example covers an registration authority certificate private key and user certificates’ private keys stored in an HSM. This example assumes a configured HSM. Your HSM will have a provider name, for example “HSM_Vendor’s Key Storage Provider.”

If you plan to run your FAS server in a virtualized environment, check with your HSM vendor about hypervisor support.

Step 1. During initial setup of FAS using the administration console, complete only the first two steps: “Deploy certificate templates” and “Set up a certificate authority.”

ローカライズされた画像

ステップ 2: HSMベンダーのドキュメントを参照して、HSMのProviderName値が何であるべきかを判断してください。HSMがCAPIを使用している場合、ドキュメントではプロバイダーが暗号化サービスプロバイダー (CSP) と呼ばれることがあります。HSMがCNGを使用している場合、プロバイダーはキー記憶域プロバイダー (KSP) と呼ばれることがあります。

ステップ 3: 構成ファイルを次のように編集します。

ローカライズされた画像

ファイルは現在、次のように表示されるはずです。

ローカライズされた画像

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

ステップ 4: Citrix Federated Authentication Serviceを再起動して、構成ファイルから値を読み取ります。

ステップ 5: FAS管理コンソールの初期設定タブで承認をクリックして、HSM内でRSAキーペアを生成し、証明書署名要求を作成します。

ステップ 6: キーペアがHSMで生成されたことを確認するには、Windowsイベントログのアプリケーションエントリを確認します。

ローカライズされた画像

注: [プロバイダー: [CNG] HSMベンダーのキー記憶域プロバイダー]

ステップ 7: 証明機関サーバーの証明機関MMCで、保留中の要求ノードを選択します。

ローカライズされた画像

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

注: 「このサービスを承認する」というステップには緑色のチェックマークが付いています。

ローカライズされた画像

ステップ 8: FAS管理コンソールでルールタブを選択し、インストールと構成で説明されているように設定を編集します。

FAS証明書の保存

FASは、FASサーバー上のMicrosoft証明書ストアを使用して証明書を保存しません。組み込みデータベースを使用します。

登録機関証明書の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

ローカライズされた画像

注:

HSMを使用して秘密キーを保存する場合、HSMコンテナーはGUIDで識別されます。HSM内の秘密キーのGUIDは、次を使用して取得できます。

Get-FasUserCertificate –address \<FAS server FQDN> -KeyInfo $true

例:

Get-FasUserCertificate –address fas3.djwfas.net -KeyInfo $true

ローカライズされた画像

関連情報

プライベートキーの保護