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

6 Antworten

  1. Patrick Schütz sagt:

    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

      • Patrick Schütz sagt:

        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.

  2. Patrick Schütz sagt:

    Nachtrag:

    Leider scheint diese Kommentarfunktion keinerlei Formatierung, wie Absätze usw. zu übernehmen.

    • Patrick Schütz sagt:

      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.

Schreibe einen Kommentar zu Patrick Schütz Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.