証明機関の構成
This article describes the advanced configuration of Federated Authentication Service (FAS) to integrate with certificate authority (CA) servers. Most of these configurations are not supported by the FAS administration console. The instructions use PowerShell APIs provided by FAS. You should have a basic knowledge of PowerShell before executing any instructions in this article.
Set up multiple CA servers for use in FAS
FAS管理コンソールを使用して、ルールを作成または編集する際に、複数のCAでFASを構成できます。
選択するすべてのCAは、Citrix_SmartcardLogon証明書テンプレート(またはルールで選択したテンプレート)を公開している必要があります。
使用したいCAのいずれかが目的のテンプレートを公開していない場合は、そのCAに対して証明機関をセットアップするの手順を実行します。
注:
すべてのCAに対してこのサービスを承認する手順を実行する必要はありません。この手順で構成された承認証明書は、どのCAでも使用できるためです。
予期される動作の変更
複数のCAサーバーでFASサーバーを構成すると、ユーザー証明書の生成は、構成されているすべてのCAサーバーに分散されます。また、構成されているCAサーバーのいずれかが失敗した場合、FASサーバーは別の利用可能なCAサーバーに切り替わります。
Microsoft 証明機関をTCPアクセス用に構成する
デフォルトでは、Microsoft CAはアクセスにDCOMを使用します。これにより、ファイアウォールセキュリティを実装する際に複雑さが増す可能性があるため、Microsoftは静的TCPポートに切り替えるための規定を設けています。Microsoft CAで、[スタート]>[ファイル名を指定して実行]>「dcomcnfg.exe」 を使用してDCOM構成パネルを開き、[コンピューター]>[マイコンピューター]>[DCOMの構成] を展開して CertSrv Request ノードを表示し、次に、CertSrv Request DCOMアプリケーションのプロパティを編集します。
「Endpoints」を変更し、静的なエンドポイントを選択し、TCPポート番号(上記の図では900)を指定します。
Microsoft証明機関を再起動し、証明書要求を送信します。
netstat –a –n –bを実行すると、certsvrがポート900でリッスンしていることが確認できます。
ローカライズされた画像(/en-us/federated-authentication-service/2303/media/fas-caconfig-netstat.png)
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
}
Get-ADUserは、ユーザーのリストをクエリするための標準的なコマンドレットです。上記の例には、UserPrincipalNameを持ち、アカウントステータスが「enabled」のユーザーのみをリストするためのフィルター引数が含まれています。
SearchBase引数は、ADのどの部分でユーザーを検索するかを絞り込みます。AD内のすべてのユーザーを含めたい場合は、これを省略できます。注:このクエリは多数のユーザーを返す可能性があります。
CSVは次のようになります。
ローカライズされた画像(/en-us/federated-authentication-service/2303/media/fas-caconfig-get-aduser-csv.png)
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
}
}
複数のFASサーバーがある場合、特定のユーザーの証明書は2回生成されます。1つはメインサーバーで、もう1つはフェイルオーバーサーバーで生成されます。
上記のスクリプトは、「default」という名前のルールに対応しています。異なるルール名(たとえば、「hello」)を使用する場合は、スクリプト内の$rule変数を変更してください。
ローカライズされた画像(/en-us/federated-authentication-service/2303/media/fas-caconfig-rule-name.png)
登録機関証明書の更新
複数のFASサーバーが使用されている場合、ログオンしているユーザーに影響を与えることなく、FAS承認証明書を更新できます。
注:
GUIを使用してFASを再承認することもできます。
ローカライズされた画像(/en-us/federated-authentication-service/2303/media/admin-console-reauthorize.png)
次の手順を完了します。
-
新しい承認証明書を作成します。
New-FasAuthorizationCertificate -
新しい承認証明書のGUIDをメモします。これは、次のコマンドによって返されます。
Get-FasAuthorizationCertificate -
FASサーバーをメンテナンスモードにします。
Set-FasServer –Address <FAS server> -MaintenanceMode $true -
新しい承認証明書を交換します。
Set-FasCertificateDefinition –AuthorizationCertificate <GUID> -
FASサーバーをメンテナンスモードから解除します。
Set-FasServer –Address <FAS server> -MaintenanceMode $false -
古い承認証明書を削除します。
Remove-FasAuthorizationCertificate