証明書失効リスト (CRL) の確認
はじめに
StoreFront は、公開された証明書失効リスト (CRL) を使用して、CVAD デリバリーコントローラーで使用される TLS 証明書のステータスを確認するように構成できます。次の場合に、証明書へのアクセスを取り消す必要がある場合があります。
- 秘密キーが侵害されたと思われる場合
- CA が侵害された場合
- 所属が変更された場合
- 証明書が置き換えられた場合
注:
このトピックは、StoreFront と Citrix Virtual Apps and Desktops デリバリーコントローラー間で HTTPS 接続が使用されている場合にのみ関連します。デリバリーコントローラーへの HTTP 接続は証明書を必要としないため、ここで説明するストアの -CertRevocationPolicy 設定は無効です。
StoreFront は、CRL 配布ポイント (CDP) 証明書拡張機能とローカルにインストールされた証明書失効リスト (CRL) を使用した証明書失効確認をサポートしています。StoreFront は完全な CRL のみをサポートしており、差分 CRL はサポートしていません。
CRL 配布ポイント (CDP) 拡張機能
StoreFront は、公開された CRL にシリアル番号が記載されている失効した証明書を使用している Citrix Virtual Apps and Desktops デリバリーコントローラーからのリソースを列挙しません。どの証明書が失効したかを検出するには、StoreFront が CDP 証明書拡張機能で定義されている URL のいずれかを使用して、公開された CRL にアクセスできる必要があります。

CRL 公開間隔
StoreFront がデリバリーコントローラー上の失効した証明書をより迅速に検出できるようにするには、CA 上の CRL 公開間隔を短縮します。CLR 配布ポイント拡張機能のプロパティを編集して、公開キーインフラストラクチャに適した低い CRL 公開間隔値を設定します。

クライアント CRL キャッシュ
Windows 公開キーインフラストラクチャクライアントは、CRL をローカルにキャッシュします。ローカルにキャッシュされた CRL の有効期限が切れるまで、より新しい CRL はダウンロードされません。
StoreFront の証明書失効リスト (CRL) へのアクセス
証明書失効確認は、StoreFront が CRL にアクセスできるかどうかに依存します。StoreFront が CRL を公開する Web サーバーまたは認証局 (CA) にどのように接続し、StoreFront が CRL の更新をどのように受信するかを慎重に検討してください。
内部エンタープライズ CA とデリバリーコントローラー上のプライベート証明書
プライベート CA と証明書を使用するには、StoreFront は正しく構成されたエンタープライズ CA と、組織および内部ネットワーク内でアクセスできる公開された CRL を必要とします。CDP 拡張機能を含めるようにエンタープライズ CA を構成する方法については、Microsoft のドキュメントを参照してください。CA が CDP 拡張機能を含めるように構成される前に存在していたデリバリーコントローラー上の証明書は、再発行が必要になる場合があります。
StoreFront および Citrix Virtual Apps and Desktops サーバーは、インターネットにアクセスできない分離されたプライベートネットワークに配置されるのが一般的です。このシナリオでは、プライベート CA を使用する必要があります。
外部公開 CA とデリバリーコントローラー上の公開証明書
StoreFront サーバーと Citrix Virtual Apps and Desktops デリバリーコントローラーは、公開 CA によって発行された証明書を使用できます。StoreFront は、CDP 拡張機能で参照されている URL を使用して、インターネット経由で公開 CA の Web サーバーに接続できる必要があります。公開証明書が失効した後、StoreFront が CDP URL を使用して CRL のコピーをダウンロードできない場合、StoreFront は CRL チェックを実行できません。
証明書失効ポリシーの表示
PowerShell SDK を使用してポリシー設定を表示するには、コマンドレット Get-STFStoreFarmConfiguration を実行し、結果のオブジェクトでプロパティ CertRevocationPolicy を表示します。例:
$store=Get-STFStoreService -VirtualPath '/Citrix/Store'
(Get-STFStoreFarmConfiguration -StoreService $store).CertRevocationPolicy
<!--NeedCopy-->
証明書失効ポリシーの構成
PowerShell SDK を使用してストアの証明書失効ポリシーを設定するには、パラメーター -CertRevocationPolicy を指定してコマンドレット Set-STFStoreFarmConfiguration を実行します。
-CertRevocationPolicy オプションは、次の値に設定できます。
| 設定 | 説明 |
|---|---|
| NoCheck | StoreFront は、デリバリーコントローラー上の証明書の失効状態を確認しません。StoreFront は、失効した証明書を使用するデリバリーコントローラーからのリソースを列挙します。これがデフォルト設定です。 |
| MustCheck | これは最も安全なオプションです。StoreFront は、デリバリーコントローラー上の証明書の CDP 拡張機能で参照されている URL に接続して CRL を取得しようとします。CRL が利用できない場合、またはデリバリーコントローラーで使用されている証明書が失効している場合、StoreFront はデリバリーコントローラーからの列挙に失敗します。URL は、証明書がプライベートである場合は内部 Web サーバーを指すことができ、証明書が公開 CA によって発行された場合は公開インターネット Web サーバーを指すことができます。 |
| FullCheck | StoreFront は、デリバリーコントローラー証明書の CDP 拡張機能で公開されている URL に接続しようとします。StoreFront が URL から CRL のコピーを取得できない場合でも、デリバリーコントローラーからのリソースの列挙を許可します。StoreFront が CRL を正常に取得し、デリバリーコントローラーの証明書が失効している場合、StoreFront はリソースを列挙しません。URL は、証明書がプライベートである場合は内部 Web サーバーを指すことができ、証明書が公開 CA によって発行された場合は公開インターネット Web サーバーを指すことができます。 |
| NoNetworkAccess | StoreFront サーバー上の Citrix Delivery Servers 証明書ストアにローカルにインポートされた CRL のみが確認されます。StoreFront は、CDP 拡張機能で指定された URL に接続しようとしません。StoreFront が CRL のローカルコピーを取得できない場合でも、デリバリーコントローラーからのリソースの列挙を許可します。StoreFront が Citrix Delivery Servers 証明書ストアから CRL のローカルコピーを正常に取得し、デリバリーコントローラーの証明書が失効している場合、StoreFront はリソースを列挙しません。 |
例:
$SiteID = 1
$StoreVirtualPath = "/Citrix/Store"
$StoreObject = Get-STFStoreService -VirtualPath $StoreVirtualPath
Set-STFStoreFarmConfiguration -StoreService $StoreObject -CertRevocationPolicy "MustCheck"
<!--NeedCopy-->
複数のストアがある場合は、すべてのストアでこの手順を繰り返します。-CertRevocationPolicy はストアレベルの設定であり、$StoreVirtualPath で指定されたストア用に構成されたすべてのデリバリーコントローラーに影響します。
StoreFront サーバーでのローカルにインポートされた CRL の使用
ローカルにインポートされた CRL の使用はサポートされていますが、Citrix® は次の理由から推奨していません。
- 複数の StoreFront サーバーグループが関与する大規模なエンタープライズ展開では、管理と更新が困難です。
- 証明書が失効するたびに、すべての StoreFront サーバーで CRL を手動で更新することは、CDP 拡張機能と Active Directory ドメイン全体で公開された CRL を使用するよりもはるかに非効率的です。
-CertRevocationPolicy が “NoNetworkAccess” に設定されており、すべての StoreFront サーバーに CRL を効率的に配布する手段がある場合は、ローカルにインストールまたは更新された CRL を使用できます。
ローカルにインポートされた CLR を使用するには
-
CRL を StoreFront サーバーのデスクトップにコピーします。StoreFront サーバーがサーバーグループの一部である場合は、グループ内のすべての StoreFront サーバーにコピーします。
-
MMC スナップインを開き、[ファイル] > [スナップインの追加と削除] > [証明書] > [コンピューターアカウント] > [Citrix Delivery Services 証明書ストア] の順に選択します。
-
右クリックして [すべてのタスク] > [インポート] を選択し、.CRL ファイルを参照して [すべてのファイルを選択] > [開く] > [すべての証明書を次のストアに配置] > [Citrix Delivery Services] を選択します。

PowerShell またはコマンドライン経由で Citrix Delivery Services 証明書ストアに CRL を追加するには
-
StoreFront にログオンし、.CRL ファイルを現在のユーザーのデスクトップにコピーします。
-
PowerShell ISE を開き、[管理者として実行] を選択します。
-
以下を実行します。
certutil -addstore "Citrix Delivery Services" "$env:UserProfile\Desktop\Example-DC01-CA.crl" <!--NeedCopy-->
成功すると、次が返されます。
Citrix Delivery Services
CRL "CN=Example-DC01-CA, DC=example, DC=com" added to store.
CertUtil: -addstore command completed successfully.
<!--NeedCopy-->
このコマンドは、スクリプトを介して展開内のすべての StoreFront サーバーに CRL を自動的に配布する例として使用できます。
デリバリーコントローラーを使用した XML 認証
StoreFront は、ユーザー認証を Citrix Virtual Apps and Desktops デリバリーコントローラーに委任するように構成できます。デリバリーコントローラー上の証明書が失効している場合、ユーザーは StoreFront にサインインできません。これは望ましい動作です。認証を担当する Citrix Virtual Apps and Desktops デリバリーコントローラー上の証明書が失効している場合、Active Directory ユーザーは StoreFront にサインインできないようにすべきだからです。
ユーザー認証をデリバリーコントローラーに委任するには
-
前のセクション「証明書失効確認のためにストアを構成する」で説明されているように、証明書失効のためにストアを構成します。
-
XML サービスベースの認証で説明されている手順に従って、HTTPS を使用するようにデリバリーコントローラーを構成します。
証明書失効確認のための XML 認証サービスの構成
これらの手順は、展開で XML 認証を使用している場合にのみ必要です。
注:
StoreFront は、ストアを認証サービスにマッピングするための 2 つのモデルをサポートしています。推奨されるアプローチは、ストアと認証サービス間の 1 対 1 マッピングです。この場合、このセクションの手順をすべてのストアとそれぞれの認証サービスで実行する必要があります。
証明書失効モードがストアと認証サービスの両方で同じ値に設定されていることを確認してください。あるいは、すべてのストアで認証構成が同じである場合、複数のストアを構成して単一の認証サービスを共有することもできます。
認証サービス PowerShell コマンドレットには Set-STFStoreFarmConfiguration に相当するものが存在しないため、わずかに異なる PowerShell アプローチが必要です。前のセクションで説明されている証明書失効ポリシー設定と同じものを使用します。
-
PowerShell ISE を開き、[管理者として実行] を選択します。
$SiteID = 1 $StoreVirtualPath = "/Citrix/Store" $AuthVirtualPath = "/Citrix/StoreAuth" <!--NeedCopy--> -
XML 認証に使用するストアサービス、認証サービス、およびデリバリーコントローラーを選択します。デリバリーコントローラーがストア用にすでに構成されていることを確認してください。
$StoreObject = Get-STFStoreService -SiteId $SiteID -VirtualPath $StoreVirtualPath $FarmObject = Get-STFStoreFarm -StoreService $StoreObject -FarmName "CVAD" $AuthObject = Get-STFAuthenticationService -SiteID $SiteID -VirtualPath $AuthVirtualPath <!--NeedCopy--> -
認証サービスの CertRevocationPolicy プロパティを直接変更します。
$AuthObject.FarmsConfiguration.CertRevocationPolicy = "FullCheck" $AuthObject.Save() Enable-STFXmlServiceAuthentication -AuthenticationService $AuthObject -Farm $FarmObject <!--NeedCopy--> -
正しい証明書失効モードが設定されていることを確認します。
$AuthObject = Get-STFAuthenticationService -SiteID 1 -VirtualPath $AuthVirtualPath $AuthObject.FarmsConfiguration.CertRevocationPolicy <!--NeedCopy-->
予期される Windows イベントビューアーのエラー
CRL 確認が有効になっている場合、StoreFront サーバーの Windows イベントビューアーにエラーが報告されます。
イベントビューアーを開くには:
- StoreFront サーバーで「ファイル名を指定して実行」と入力します。
- 「eventvwr」と入力し、Enter キーを押します。
- [アプリケーションとサービス] で Citrix Delivery Services イベントを探します。
エラー例: ストアが失効した証明書を持つデリバリーコントローラーに接続できない
An SSL connection could not be established: An error occurred during SSL crytography: Access is denied.
This message was reported from the Citrix XML Service at address https://deliverycontrollerTLS.domain.com/scripts/wpnbr.dll.
The specified Citrix XML Service could not be contacted and has been temporarily removed from the list of active services.
<!--NeedCopy-->
エラー例: XML 認証の失敗によりユーザーがログオンできない場合の Receiver for Web からのエラー
An unexpected response was received during the authentication process.
Citrix.DeliveryServicesClients.Authentication.Exceptions.ExplicitAuthenticationFailure,
Citrix.DeliveryServicesClients.Authentication, Version=3.20.0.0,
Culture=neutral, PublicKeyToken=null
General Authentication Failure
ExplicitResult.State: 5
AuthenticationControllerRequestUrl:
https://storefront.example.com/Citrix/StoreWeb/ExplicitAuth/LoginAttempt
ActionType: LoginAttempt
at
Citrix.Web.AuthControllers.Controllers.ExplicitAuthController.GetExplicitAuthResult(ActionType
type, Dictionary`2 postParams)
<!--NeedCopy-->