Konfiguration einer Zertifizierungsstelle für den Verbundauthentifizierungsdienst
Dieser Abschnitt beschreibt die erweiterte Konfiguration des Citrix Verbundauthentifizierungsdiensts (Federated Authentication Service, FAS) für die Integration mit Zertifizierungsstellenservern, die nicht von der FAS-Verwaltungskonsole unterstützt werden. In den Anweisungen werden PowerShell-APIs verwendet, die der Verbundauthentifizierungsdienst bietet. Grundlegende Kenntnisse von PowerShell werden für die Ausführung der Anweisungen in diesem Abschnitt vorausgesetzt.
Einrichten mehrerer Zertifizierungsstellenserver für die Verwendung im FAS
In diesem Abschnitt wird beschrieben, wie Sie einen FAS-Server so einrichten, dass mehrere Zertifizierungsstellenserver Zertifikate ausstellen können. Dies ermöglicht Lastausgleich und Failover für die Zertifizierungsstellenserver.
Schritt 1: Ermitteln, wie viele CA-Server FAS findet
Bestimmen Sie mit dem Cmdlet Get-FASMsCertificateAuthority, mit welchen Zertifizierungsstellenservern FAS eine Verbindung herstellen kann. Das folgende Beispiel zeigt, dass FAS mit drei Zertifizierungsstellenservern eine Verbindung herstellen kann.
PS > Add-PSSnapin Citrix*
PS > Get-FasMsCertificateAuthority
Address IsDefault PublishedTemplates
------- --------- ------------------
DC1.bvt.local\bvt-DC1-CA False {Citrix_SmartcardLogon, Citrix_Regis...
ca1.bvt.local\CA1.bvt.local False {Citrix_SmartcardLogon, Citrix_Regis...
ca2.bvt.local\ca2.bvt.local False {Citrix_SmartcardLogon, Citrix_Regis...
Schritt 2: Ändern der vorhandenen Zertifikatdefinition
Citrix empfiehlt, dass Sie mit der FAS-Verwaltungskonsole (und nicht mit PowerShell) eine Rolle erstellen. Auf diese Weise müssen Sie den SDL nicht später manuell hinzufügen. Im folgenden Beispiel wird eine Rolle namens “Default” erstellt, in der die Zugriffsregel konfiguriert ist:
Um mehrere Zertifizierungsstellen im Feld für die Zertifizierungsstelle hinzuzufügen, müssen Sie die Zertifikatdefinition mit PowerShell konfigurieren. (Das Hinzufügen mehrerer Zertifizierungsstellen wird von der FAS-Verwaltungskonsole in dieser Version nicht unterstützt.)
Als Erstes benötigen Sie den Namen der Zertifikatdefinition. Der Name kann nicht mit der Verwaltungskonsole ermittelt werden. Verwenden Sie zur Ermittlung das Cmdlet Get-FASCertificateDefinition.
PS > Get-FasCertificateDefinition
Name : default_Definition
CertificateAuthorities : {DC1.bvt.local\bvt-DC1-CA}
MsTemplate : Citrix_SmartcardLogon
AuthorizationCertificate : 86ce221c-7599-43a3-9dbd-8e6a3c2be7b7
PolicyOids : {}
InSession : True
Auf der Benutzeroberfläche sieht dies wie folgt aus:
Wenn Sie den Namen der Zertifikatdefinition ermittelt haben, ändern Sie die Zertifikatdefinition, damit Sie eine Liste mit Zertifizierungsstellen haben:
Das Cmdlet Get-FASCertificateDefinition gibt nun Folgendes zurück:
PS > Get-FasCertificateDefinition
Name : default_Definition
CertificateAuthorities : {DC1.bvt.local\bvt-DC1-CA, ca1.bvt.local\CA1.bvt.local, ca2.bvt.local\ca2.bvt.local}
MsTemplate : Citrix_SmartcardLogon
AuthorizationCertificate : 86ce221c-7599-43a3-9dbd-8e6a3c2be7b7
PolicyOids : {}
InSession : True
Nachdem Sie mehrere Zertifizierungsstellenserver konfiguriert haben, kann FAS nicht über die FAS-Verwaltungskonsole konfiguriert werden. Die Felder “Certificate Authority” und “Certificate Template” sind leer (siehe Abbildung):
Hinweis:
Wenn Sie mit der Konsole die Zugriffsregel ändern, wird Ihre Konfiguration mit mehreren Zertifizierungsstellen überschrieben. Wiederholen Sie Schritt 2, um alle Zertifizierungsstellen anzuzeigen.
Wenn Sie die Zugriffssteuerungslisten (ACL) in PowerShell neu konfigurieren möchten und unsicher bezüglich der Werte sind, empfehlen wir Folgendes:
- Erstellen Sie eine zweite Regel (z. B. “test”) mit einer einzelnen Zertifizierungsstelle.
- Konfigurieren Sie die ACLs je nach Bedarf in der Regel “test”.
- Verwenden Sie PowerShell, um die ACL zu prüfen (Get-FasRule –name “test”).
- Verwenden Sie PowerShell, um die ACL auf die ursprüngliche Regel anzuwenden (Set-FasRule).
- Löschen Sie die nicht mehr benötigte Regel “test”.
Erwartete Verhaltensänderungen
Wenn Sie den FAS-Server mit mehreren Zertifizierungsstellenservern konfiguriert haben, wird die Generierung von Benutzerzertifikaten auf alle konfigurierten Zertifizierungsstellenserver verteilt. Wenn einer der konfigurierten Zertifizierungsstellenserver ausfällt, wechselt der FAS-Server zu einem anderen verfügbaren Zertifizierungsstellenserver.
Konfigurieren der Microsoft-Zertifizierungsstelle für TCP-Zugriff
Standardmäßig verwendet die Microsoft-Zertifizierungsstelle für den Zugriff DCOM. Beim Implementieren von Firewallsicherheit kann dies sehr komplex sein, daher bietet Microsoft die Möglichkeit, zu einem statischen TCP-Port zu wechseln. Verwenden Sie in der Microsoft-Zertifizierungsstelle Start > Ausführen > dcomcnfg.exe, um das DCOM-Konfigurationsfenster zu öffnen. Erweitern Sie Computer > Arbeitsplatz > DCOM-Konfiguration, um den Knoten CertSrv Request anzuzeigen, und bearbeiten Sie dann die Eigenschaften der Anwendung “CertSrv Request DCOM”:
Ändern Sie die Endpunkte, indem Sie einen statischen Endpunkt auswählen, und geben Sie eine TCP-Portnummer ein (900 in der Abbildung oben).
Starten Sie die Microsoft-Zertifizierungsstelle neu und senden Sie eine Zertifikatanforderung. Wenn Sie “netstat –a –n –b” ausführen, sollte certsrv zur Überwachung Port 900 verwenden:
Sie brauchen den FAS-Server (bzw. andere Maschinen, die die Zertifizierungsstelle verwenden) nicht zu konfigurieren, da DCOM durch Verwendung des RPC-Ports eine Aushandlungsphase hat. Wenn ein Client DCOM verwenden muss, stellt er eine Verbindung zum DCOM RPC-Dienst auf dem Zertifikatserver her und fordert Zugriff auf einen bestimmten DCOM-Server an. Dadurch wird Port 900 geöffnet und der DCOM-Server gibt dem FAS-Server Anweisungen zum Herstellen der Verbindung.
Vorabgenerieren von Benutzerzertifikaten
Die Anmeldung erfolgt für Benutzer erheblich schneller, wenn Benutzerzertifikate im FAS-Server vorab generiert werden. In den folgenden Abschnitten wird die erforderliche Vorgehensweise für einen oder mehrere FAS-Server beschrieben.
Abrufen einer Liste der Active Directory-Benutzer
Sie können die Zertifikatgenerierung verbessern, indem Sie eine Liste der Benutzer von Active Directory abrufen und als Datei (z. B. als CSV-Datei) speichern, wie im folgenden Beispiel dargestellt.
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 ist ein Standardcmdlet zum Abrufen einer Liste der Benutzer. Das obige Beispiel enthält ein Filterargument, damit nur Benutzer mit einem UserPrincipalName aufgelistet werden, deren Kontostatus “enabled” ist.
Mit dem Argument SearchBase können Sie den Teil von Active Directory einschränken, der nach Benutzern durchsucht wird. Wenn Sie alle Benutzer in AD durchsuchen möchten, lassen Sie das Argument aus. Hinweis: Die Abfrage gibt u. U. eine große Anzahl Benutzer zurück.
Die CSV-Datei sieht wie folgt aus:
FAS-Server
Das folgende PowerShell-Skript erstellt mit der generierten Benutzerliste eine Liste mit Benutzerzertifikaten.
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-->
Wenn Sie mehr als einen FAS-Server haben, wird das Zertifikat für einen bestimmten Benutzer zweimal generiert: eins auf dem Hauptserver und das andere auf dem Failoverserver.
Das obige Skript wird durch die Regel “default” gesteuert. Wenn Ihre Regel einen anderen Namen hat (z. B. “hello”), ändern Sie im Skript die Variable $rule.
Erneuern von Registrierungsstellenzertifikaten
Wenn mehrere FAS-Server verwendet werden, können Sie ein FAS-Registrierungsstellenzertifikat erneuern, ohne dass es Auswirkungen auf angemeldete Benutzer hat. Hinweis: Sie können die Autorisierung von FAS auch mit der GUID aufheben und FAS neu autorisieren, jedoch werden dabei die FAS-Konfigurationsoptionen zurückgesetzt.
Führen Sie die folgenden Schritte aus:
-
Erstellen Sie ein neues Autorisierungszertifikat:
New-FasAuthorizationCertificate
-
Notieren Sie die GUID des neuen Autorisierungszertifikats, das mit folgendem Befehl zurückgegeben wird:
Get-FasAuthorizationCertificate
-
Versetzen Sie den FAS-Server in den Wartungsmodus:
Set-FasServer –Address <FAS server> -MaintenanceMode $true
-
Wechseln Sie zum neuen Autorisierungszertifikat:
Set-FasCertificateDefinition –AuthorizationCertificate <GUID>
-
Heben Sie den Wartungsmodus für den FAS-Server auf:
Set-FasServer –Address <FAS server> -MaintenanceMode $false
-
Löschen Sie das alte Autorisierungszertifikat:
Remove-FasAuthorizationCertificate
Verwandte Informationen
- Der Artikel Verbundauthentifizierungsdienst ist die primäre Referenz für die Installation und Konfiguration dieser Komponente.
- Der Artikel Übersicht über die Architekturen des Verbundauthentifizierungsdiensts enthält eine Übersicht über die gebräuchlichen FAS-Architekturen.
- Der Artikel Anleitung: Konfigurieren und Verwalten des Verbundauthentifizierungsdiensts enthält Links zu weiteren Anleitungen.