認証局の構成
この記事では、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 認証局の構成
デフォルトでは、Microsoft CA はアクセスに DCOM を使用します。これにより、ファイアウォールセキュリティを実装する際に複雑さが発生する可能性があるため、Microsoft は静的 TCP ポートに切り替えるための規定を設けています。Microsoft CA で、[スタート] > [ファイル名を指定して実行] > dcomcnfg.exe を使用して DCOM 構成パネルを開き、コンピューター > マイコンピューター > DCOM の構成 を展開して CertSrv Request ノードを表示し、CertSrv Request DCOM アプリケーションのプロパティを編集します。

「エンドポイント」を変更して静的エンドポイントを選択し、TCP ポート番号 (上記のグラフィックでは 900) を指定します。
Microsoft 認証局を再起動し、証明書要求を送信します。netstat –a –n –b を実行すると、certsvr がポート 900 でリッスンしていることが確認できます。

DCOM は RPC ポートを使用してネゴシエーション段階があるため、FAS サーバー (または認証局を使用する他のマシン) を構成する必要はありません。クライアントが DCOM を使用する必要がある場合、証明書サーバー上の DCOM RPC サービスに接続し、特定の DCOM サーバーへのアクセスを要求します。これによりポート 900 が開かれ、DCOM サーバーは FAS サーバーに接続方法を指示します。
ユーザー証明書の事前生成
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 サーバーがある場合、特定のユーザーの証明書は 2 回生成されます。1 つはメインサーバーで、もう 1 つはフェイルオーバーサーバーで生成されます。
上記のスクリプトは、「default」という名前のルールに対応しています。異なるルール名 (たとえば、「hello」) を使用している場合は、スクリプト内の $rule 変数を変更してください。

登録局証明書の更新
複数の FAS サーバーが使用されている場合、ログオンしているユーザーに影響を与えることなく、FAS 承認証明書を更新できます。
注:
GUI を使用して FAS を再承認することもできます。
次のシーケンスを完了します。
-
新しい承認証明書を作成します:
New-FasAuthorizationCertificate -
Get-FasAuthorizationCertificateによって返される新しい承認証明書の GUID をメモします。 -
FAS サーバーをメンテナンスモードにします:
Set-FasServer –Address <FAS server> -MaintenanceMode $true -
新しい承認証明書を交換します:
Set-FasCertificateDefinition –AuthorizationCertificate <GUID> -
FAS サーバーをメンテナンスモードから解除します:
Set-FasServer –Address <FAS server> -MaintenanceMode $false -
古い承認証明書を削除します:
Remove-FasAuthorizationCertificate
