ADFS Austausch des Service Communications Zertifikats
ADFS Server
Zu Beginn des Austauschs muss auf allen ADFS Servern der Farm das neue Zertifikate mit Private Key in den Personal Store des Systems importiert werden:
Import-PfxCertificate -FilePath <PFX-Datei/-Pfad> -CertStoreLocation Cert:\LocalMachine\My -Password <PFX-Passwort>
Danach wird auf dem primären ADFS Server der Farm das Zertifikat getauscht:
$CertThumb = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "<Zertifikat-Subject>"}).Thumbprint Set-AdfsSslCertificate -Thumbprint $CertThumb
Zum Abschluss ist auf allen ADFS Servern der Farm der ADFS Dienst neu zu starten.
Restart-Service AdfsSrv -Force
Um zu prüfen, ob das neue Zertifikat nun verwendet wird, lässt sich die SSL Konfiguration wie folgt ausgeben:
Get-AdfsSslCertificate | fl
ADFS Web Application Proxy
Analog zu den ADFS Servern ist auch auf den WAPs zu Beginn das neue Zertifikate mit Private Key zu importieren:
Import-PfxCertificate -FilePath <PFX-Datei/-Pfad> -CertStoreLocation Cert:\LocalMachine\My -Password <PFX-Passwort>
Danach wird auf allen WAPs das neue Zertifikat als SSL Zertifikat konfiguriert:
$CertThumb = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "<Zertifikat-Subject>"}).Thumbprint $AppID = (Get-WebApplicationProxyApplication).ID Set-WebApplicationProxySslCertificate -Thumbprint $CertThumb Set-WebApplicationProxyApplication -ExternalCertificateThumbprint $CertThumb -ID $AppID
Wird das Zertifikat ersetzt, solange das alte Zertifikat noch gültig war, reichen obige Befehle aus. Ist es bereits abgelaufen, muss die WAP Verbindung neu konfiguriert werden:
$cred = Get-Credential Install-WebApplicationProxy -FederationServiceTrustCredential $cred -CertificateThumbprint '<Zertifikat-Thumbprint>' -FederationServiceName '<ADFS-FQDN>'
Zum Abschluss ist auch auf den WAPs der ADFS Dienst neu zu starten:
Restart-Service AdfsSrv -Force
Auch auf den WAPs lässt sich prüfen, ob das neue Zertifikat nun verwendet wird:
Get-WebApplicationSslCertificate | fl
Hallo,
danke für den hilfreichen Artikel.
Leider stimmt mit dem folgenden Befehl etwas nicht:
„Set-WebApplicationProxySslCertificate -ExternalCertificateThumbprint $CertThumb -ID $AppID“
Muss wohl
„Set-WebApplicationProxyApplication -ExternalCertificateThumbprint $certThumb -ID $AppID“ heißen.
Allerdings gibt es auch dann eine Fehlermeldung, dass er ein Array nicht als System.Guid verarbeiten kann.
Set-WebApplicationProxyApplication : Die Argumenttransformation für den Parameter „ID“ kann nicht verarbeitet werden. Der Wert „System.Object[]“ vom Typ „System.Object[]“ kann nicht in den Typ „System.Guid“ konvertiert werden.
In Zeile:1 Zeichen:82
+ … ProxyApplication -ExternalCertificateThumbprint $certThumb -ID $AppID
+ ~~~~~~
+ CategoryInfo : InvalidData: (:) [Set-WebApplicationProxyApplication], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Set-WebApplicationProxyApplication
Hallo Patrick
Mit dem Cmdlet hast du Recht, Copy/Paste Fehler. Bzgl. deiner Fehlermeldung: nutzt du mehr als eine Applikation über den WAP Server? Der Befehl ist für „einfache“ Installationen mit nur einer Applikation pro WAP Server (bzw. ist es so eigentlich von Microsoft empfohlen). Bei mehreren Applikationen ist die Variable ein Array und das funktioniert dann nicht mehr so einfach.
Gruß
Andreas
Hallo Andreas,
ja dort sind mehrere Applikationen hinterlegt (ein Array mit 18 UUIDs wird zurückgegeben..).
Ich habe nun einfach alle 18 UUIDs nacheinander mit dem Befehl ausgeführt.
Es scheint dann zu funktionieren.
Leider habe ich das Projekt von einem ehemaligen Kollegen übernommen und daher kann ich aktuell an der Situation nix ändern, dass es von Microsoft so nicht empfohlen wird..
Aber das Problem hat sich eh bald erledigt, da wir dabei sind den ADFS-Server mit Azure AD Auth abzulösen..
Trotzdem danke für die schnelle Antwort.
Mit freundlichen Grüßen aus Wiesbaden
Patrick Schütz
Hallo Patrick
Freut mich, dass es so geklappt hat. Ja, hab auch bislang gute Erfahrungen gemacht von ADFS zu PTA zu wechseln.
Gruß
Andreas
P.S.:
Damit das auch mit mehreren Applikationen funktioniert, müsste an der entsprechenden Stelle eine ForEach eingebaut werden, welches die Befehle für die einzelnen Werte des Arrays durchgeht, sowas wie:
$AppIDs = (Get-WebApplicationProxyApplication).ID
Foreach ($AppID in $AppIDs ) { ... }
… ohne Gewähr, ich hab’s nicht getestet.
Nachtrag:
Leider scheint diese Kommentarfunktion keinerlei Formatierung, wie Absätze usw. zu übernehmen.
Nachtrag, das Problem mit der Formatierung war wohl nur in der „Vorschau“, wenn ein Kommentar auf die Freischaltung wartet.
Aber auch das scheinst du nun korrigiert zu haben.