証明機関の構成
この記事では、Federated Authentication Service (FAS) を証明機関 (CA) サーバーと統合するための高度な構成について説明します。これらの構成のほとんどは、FAS 管理コンソールではサポートされていません。手順では、FAS が提供する PowerShell API を使用します。この記事のいずれかの手順を実行する前に、PowerShell の基本的な知識が必要です。
FAS で使用する複数の CA サーバーのセットアップ
ルールを作成または編集する際に、FAS 管理コンソールを使用して複数の CA で FAS を構成できます。

選択するすべての CA は、Citrix_SmartcardLogon 証明書テンプレート (またはルールで選択したテンプレート) を公開している必要があります。
使用したい CA のいずれかが目的のテンプレートを公開していない場合は、その CA に対して 証明機関のセットアップ 手順を実行してください。
注:
このステップで構成された承認証明書は、どの CA でも使用できるため、すべての CA に対して このサービスを承認する ステップを実行する必要はありません。
予期される動作の変更
FAS サーバーを複数の CA サーバーで構成すると、ユーザー証明書の生成は構成されているすべての CA サーバーに分散されます。また、構成されている CA サーバーのいずれかが失敗した場合、FAS サーバーは別の利用可能な CA サーバーに切り替わります。
TCP アクセス用の Microsoft 証明機関の構成
FAS は DCOM を使用して Microsoft CA にアクセスします。DCOM はポート 135 を使用して、サービスがリッスンしているポートを検出します。デフォルトでは、リッスンポートは動的に割り当てられます。
これにより、ファイアウォールセキュリティを実装する際に複雑さが発生する可能性があります。そのため、Microsoft は静的ポートを構成する機能を提供しています。
Microsoft CA で静的ポートを構成するには、スタート > ファイル名を指定して実行 > dcomcnfg.exe を選択して、DCOM 構成パネルを開きます。コンピューター > マイ コンピューター > DCOM の構成 を展開して CertSrv Request ノードを表示します。次に、CertSrv Request DCOM アプリケーションのプロパティを編集します。

エンドポイントを変更して静的エンドポイントを選択し、TCP ポート番号 (上記のグラフィックでは 900) を指定します。
この例では、ファイアウォールでポート 135 とポート 900 を許可する必要があります。
変更を適用するには、Microsoft 証明機関を再起動します。
DCOM は RPC ポート 135 を使用してネゴシエーション段階があるため、FAS サーバー (または証明機関を使用するその他のマシン) を構成する必要はありません。クライアントが DCOM を使用する必要がある場合、サーバー上の DCOM RPC サービスに接続し、特定の DCOM サーバーへのアクセスを要求します。これにより、ポート 900 (この例では) が開かれ、DCOM サーバーはクライアントにそのポートに接続するように指示します。
ユーザー証明書の事前生成
FAS サーバー内でユーザー証明書が事前生成されると、ユーザーのログオン時間が大幅に改善されます。以下のセクションでは、単一または複数の FAS サーバーでこれを実行する方法について説明します。
Active Directory ユーザーのリストの取得
AD をクエリし、ユーザーのリストをファイル (たとえば、.csv ファイル) に保存することで、証明書の生成を改善できます。次の例を参照してください。
Import-Module ActiveDirectory
$searchbase = "cn=users,dc=bvt,dc=local" # AD User Base to Look for Users, leave it blank to search all
$filename = "user_list.csv" # Filename to save
if ($searchbase -ne ""){
Get-ADUser -Filter {(UserPrincipalName -ne "null") -and (Enabled -eq "true")} -SearchBase $searchbase -Properties UserPrincipalName | Select UserPrincipalName | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $filename
} else {
Get-ADUser -Filter {(UserPrincipalName -ne "null") -and (Enabled -eq "true")} -Properties UserPrincipalName | Select UserPrincipalName | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $filename
}
<!--NeedCopy-->
Get-ADUser は、ユーザーのリストをクエリするための標準的なコマンドレットです。上記の例には、UserPrincipalName を持ち、アカウントステータスが「有効」であるユーザーのみをリストするためのフィルター引数が含まれています。
SearchBase 引数は、AD のどの部分でユーザーを検索するかを絞り込みます。AD 内のすべてのユーザーを含めたい場合は、これを省略できます。
注:
このクエリは、多数のユーザーを返す可能性があります。
CSV は次のようになります。
FAS サーバー
次の PowerShell スクリプトは、以前に生成されたユーザーリストを取得し、ユーザー証明書のリストを作成します。
Add-PSSnapin Citrix.A*
$csv = "user_list.csv"
$rule = "default" # rule/role in your admin console
- $users = Import-Csv -encoding utf8 $csv
foreach ( $user in $users )
- {
$server = Get-FasServerForUser -UserPrincipalNames $user.UserPrincipalName
if( $server.Server -ne $NULL) {
New-FasUserCertificate -Address $server.Server -UserPrincipalName $user.UserPrincipalName -CertificateDefinition $rule"_Definition" -Rule $rule
}
if( $server.Failover -ne $NULL) {
New-FasUserCertificate -Address $server.Failover -UserPrincipalName $user.UserPrincipalName -CertificateDefinition $rule"_Definition" -Rule $rule
}
}
<!--NeedCopy-->
複数の FAS サーバーがある場合、特定のユーザーの証明書は、メインサーバーとフェールオーバーサーバーでそれぞれ 1 回ずつ、合計 2 回生成されます。
この前のスクリプトは、「default」という名前のルールに対応しています。異なるルール名 (たとえば、「hello」) を使用している場合は、スクリプト内の $rule 変数を変更してください。
FAS 承認証明書の更新
FAS ユーザーを中断することなく、FAS 承認証明書を更新できます。
FAS 管理コンソールの使用
- 新しい FAS 承認証明書要求を生成するには、再承認をクリックします。
CA で要求を手動で承認する必要があります。詳細については、「Federated Authentication Service の承認」を参照してください。
- 新しい承認証明書が生成されると、FAS はそれがまだルールに関連付けられていないことを示します。新しい承認証明書をルールに関連付けるには、**構成の更新**をクリックします。 
PowerShell の使用
次のシーケンスを完了します。
-
承認証明書を作成します:
New-FasAuthorizationCertificate -
Get-FasAuthorizationCertificateによって返される新しい承認証明書の GUID をメモします。 -
新しい承認証明書を交換します:
Set-FasCertificateDefinition –AuthorizationCertificate <GUID> -
古い承認証明書を削除します:
Remove-FasAuthorizationCertificate。ユーザーアクティビティが中断されないように、DeleteUserCerts $falseオプションを使用してください。
FAS の承認解除と FAS 証明書の削除
FAS 管理コンソールの使用
- **承認解除**リンクをクリックして、承認証明書を削除します。すべてのユーザー証明書とすべてのルールを削除できます (ただし、証明書をクリアするために必須ではありません)。
- 
- ルールを削除しない場合、後で FAS を承認すると警告が表示されます。 
この警告は、承認証明書がまだルールに関連付けられていないことを示しています。新しい承認証明書をルールに関連付けるには、構成の更新をクリックします。
PowerShell の使用
承認証明書とユーザー証明書を削除するには、次の PowerShell コマンドを使用します。
$AuthCert = Get-FasAuthorizationCertificate -Address localhost
Remove-FasAuthorizationCertificate -Address localhost -Id $AuthCert.Id
<!--NeedCopy-->
- > **注:** > > `Get-FasAuthorizationCertificate` は、承認証明書と保留中の承認証明書要求のリストを返します。これにより、`Remove-FasAuthorizationCertificate` を続行する前に `$AuthCert` の値を確認できます。
承認証明書を削除し、ユーザー証明書を保持するには、DeleteUserCerts パラメーターを false に設定します。
Remove-FasAuthorizationCertificate -Address localhost -Id $AuthCert.Id -DeleteUserCerts $false
残りのユーザー証明書は、FAS による VDA サインインおよびセッション内証明書に引き続き使用できます。これは、FAS 承認を更新する際に役立ちます。詳細については、「FAS 承認証明書の更新」を参照してください。
- ユーザー証明書は次のように削除できます。
Remove-FasUserCertificate -Address localhost
このコマンドは、FAS サーバーからすべてのユーザー証明書を削除します。このコマンドには、削除される証明書のセットをフィルター処理するオプションがあります。
注:
FAS が内部ストレージから承認証明書またはユーザー証明書を削除すると、関連付けられたキーペアも削除されます。
-
オフライン承認
- FAS 承認証明書は、PowerShell を使用してオフラインで要求できます。これは、証明機関がオンライン証明書署名要求を通じて承認証明書を発行することを望まない組織に適しています。
-
管理コンソールを使用した初期 FAS 構成中に、最初の 2 つのステップのみを完了します: 証明書テンプレートの展開と証明機関のセットアップ。

-
FAS サーバーで次の PowerShell コマンドレットをロードします。
Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1` <!--NeedCopy--> -
FAS サーバーで次の PowerShell コマンドレットを入力して、キーペアを生成し、証明書署名要求を作成します。
$AuthCertRequest = New-FasAuthorizationCertificateRequest -Address localhost $AuthCertRequest <!--NeedCopy-->これにより、次のようになります。

注:
生成されるキーペアのプロパティは、FAS 承認キー構成によって決定されます。詳細については、「秘密キーの保護」を参照してください。
-
証明書要求をディスクにコピーします。
`$AuthCertRequest.CertificateRequest > c:\temp\authcert.csr <!--NeedCopy--> -
証明書要求ファイル (この例では authcert.csr) を証明機関に提示し、要求を承認して、証明書応答を取得します。
次の 5 つのステップは、Microsoft Enterprise 証明機関を使用する場合に固有のものです。他の CA の場合は、CA ベンダーに問い合わせてサポートを受けてください。
-
証明機関サーバーで、証明書テンプレート MMC スナップインを追加します。Citrix_RegistrationAuthority_ManualAuthorization テンプレートを右クリックし、テンプレートの複製を選択します。全般タブを選択します。名前と有効期間を変更します。この例では、名前は Offline_RA で、有効期間は 2 年です。

-
証明機関サーバーで、証明機関 MMC スナップインを追加します。証明書テンプレートを右クリックします。新規を選択し、発行する証明書テンプレートをクリックします。作成したテンプレートを選択します。
-
FAS サーバーの PowerShell コマンドプロンプトに次のように入力して、証明書署名要求を証明機関に送信します。
certreq -submit -attrib "certificatetemplate:<certificate template from step 5a>" <certificate request file from step 4> <!--NeedCopy-->例:
certreq -submit -attrib "certificatetemplate:Offline_RA" C:\temp\authcert.csr <!--NeedCopy-->上記のコマンドを実行すると、次のようになります。

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

証明機関が指定されると、コマンドが完了し、RequestID が表示されます。

-
証明機関サーバーで、証明機関 MMC スナップインの 保留中の要求 をクリックします。要求 ID を見つけます。次に、要求を右クリックして 発行 を選択します。
-
発行済み証明書ノードを選択します。発行された証明書を見つけます (要求 ID が一致する必要があります)。ダブルクリックして証明書を開きます。詳細タブを選択します。ファイルにコピーをクリックします。証明書のエクスポートウィザードが起動します。次へをクリックします。ファイル形式に次のオプションを選択します。

形式は Cryptographic Message Syntax Standard – PKCS #7 Certificates (.P7B) でなければならず、可能であれば、証明のパスにあるすべての証明書を含めるが選択されている必要があります。
-
-
エクスポートした証明書ファイルを FAS サーバーにコピーします。
-
FAS サーバーで次の PowerShell コマンドレットを入力して、登録機関証明書を FAS サーバーにインポートします。
Import-FasAuthorizationCertificateResponse -Address localhost -Id $AuthCertRequest.Id -Pkcs7CertificateFile <Certificate file from step 6> <!--NeedCopy-->例:
Import-FasAuthorizationCertificateResponse -Address localhost -Id $AuthCertRequest.Id -Pkcs7CertificateFile C:\temp\response.p7b <!--NeedCopy-->このコマンドを実行すると、次のようになります。

-
FAS 管理コンソールを確認します。FAS が承認済みであることが表示されているはずです。

注:
このサービスを承認のステップの横に緑色のチェックマークが表示されます。
-
ルールを作成して構成を続行します。詳細については、「ルールの構成」を参照してください。

