MonitorExchangeAuthCertificate

Dies ist kein Skript von mir sondern Microsoft stellt ihnen damit ein Werkzeug bereit, um das Exchange OAuth -Zertifikat zu überwachen und ggfls. zu erneuern. Dies ist alle 5 Jahre erforderlich.

Prüfen vor Update

Für jede Exchange Organisation gibt es genau ein solches Zertifikat, mit dem sich die Server untereinander z.B. beim Proxying fron HTTP-Requests von einem Frontend zum Backend authentifizieren können. Zudem wird es auch mit Exchange Online - Hybrid zur Authentifizierung mit Exchange Online genutzt. Seit dem Exchange Nov 2023-Update nutzt Exchange das Zertifikat zusätzlich zum Signieren der Payload bei der PowerShell Serialization.

Wenn Zertifikate abgelaufen sind, kann sogar das Setup des CU13 fehlschlagen, wie folgende Meldung zeigt:

Es ist also immer eine gute Idee, den Status der Exchange Zertifikate im Blick zu haben und entsprechend zu aktualisieren. Die "öffentlichen" Zertifikate, mit denen sich die Anwender z.B. per OWA, ActiveSync oder MAPI/HTTP verbinden gelten ebenso wie für SMTP genutzte Zertifikate meist nur ein Jahr. Hier haben Sie hoffentlich etwas Übung mit der Erneuerung. Beim OAUTH-Zertifikat ist das meist nicht so. Viele Administratoren wissen gar nicht um dessen Funktion. Da kann man auch die 5 Jahre mal gerne vergessen.

Fehler korrigieren

Sollten Sie hier in den Fehler gelaufen sein, dass die Installation eines Exchange Update fehlschlägt, dann starten Sie auf dem Server einfach eine normale PowerShell als Administrator. Die Exchange PowerShell können Sie meist nicht mehr starten, da der Exchange Server und IIS dann schon nicht mehr aktiv sind und die neue PowerShell 7 kennt den Befehl "Add-PSSnapin" nicht, den wir nun brauchen:

# Einbinden des Exchange Management Snapins ohne RBAC und Remote PowerShell
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010

#Anzeigen der lokalen Zertifikat auf dem Server
Get-ExchangeCertificate | ft thumbprint,status,notafter,subject

Über den Weg können Sie nun mit "New-ExchangeCertificate" einfach das Selbstzertifikat schon neu erzeugen, ungültige Zertifikate entfernen und auch das OAUTH-Zertifikat austauschen. Aber nun ist der Moment für das Microsoft Skript gekommen

MonitorExchangeAuthCertificate.ps1

Spätestens mit dem Nov 2023 Update sollte jeder Exchange Administrator dieses Skript kennen und den Einsatz prüfen. Natürlich können Sie manuell die Gültigkeit und das Ablaufdatum des Zertifikats mit PRTG oder anderen Tools genauso gut überwachen. Aber das Skript macht doch einiges einfacher und noch einiges mehr. Ein Download ist es allemal wert

Download:
https://github.com/microsoft/CSS-Exchange/releases/latest/download/MonitorExchangeAuthCertificate.ps1

ValidateAndRenewAuthCertificate

Dies gilt insbesondere, wenn Sie das Zertifikat aktualisieren wollen. Auch das ist manuell möglich aber das Skript nimmt ihnen schon einige Arbeit ab. Hier am Beispiel einer Demo-Umgebung, bei der das OAUTH-Zertifikat abgelaufen war und daher die Installation des Exchange 2019 CU13 scheiterte. Ich habe das Skript mit "-ValidateAndRenewAuthCertificate $true" gestartet und alle Eingaben vorher geprüft. Sie sehen so genau, was das Skript noch alles macht und welche

Das Skript prüft und in meinem Fall findet es ein abgelaufenes Zertifikat, welches sofort erneuert und aktiviert werden muss.

  • Zuerst generiert das Skript mit "New-ExchangeCertificate" ein Oauth Zertifikat
  • Dann wird es mit "Enable-ExchangeCertificate" ein andere Zertifikat für IMAP, POP, IIS, SMTP aktiviert
    Prüfen Sie vorher den Thumbprint, ob dies das richtige Zertifikat ist. Es war in meinem Fall nicht das gerade neu generierte OAuth-Zertifikat
  • Mit Set-AuthConfig wird dann das neue OAUTH-Zertifikat aktiviert
  • Mit Set-AuthConfig wird dann das neue OAUTH-Zertifikat publiziert
  • Mit Set-AuthConfig -ClearPreviousCertificate wird dann das neue OAUTH-Zertifikat
    Das ist in Ordnung, wenn es eh schon abgelaufen ist und nicht mehr genutzt werden konnte. Bei einem geplanten Rollover würde man das neue erst einrichten und die Replikation abwarten und das alte nach einigen Tagen entfernen
  • WebAppPool neu starten
    Damit das neue Zertifikat aktiv wird, muss der Web Application Pool neu gestartet werden. Das sollten Sie vielleicht abstimmen, damit keine Anwender davon betroffen sind.

Wer genau aufgepasst hat, wird nun sagen, dass etwas fehlt: Das OAuth-Zertifikat kann auch für die Authentifizierung im Hybrid-Mode mit Exchange Online genutzt werden. Wenn Sie hier das lokale Zertifikat tauschen, dann sollten Sich auch noch einmal manuell oder mit dem HCW - Hybrid Configuration Wizard die Konfiguration aktualisieren.

Danach hatte mein Exchange Server ein neues "CN=Microsoft Exchange Server Auth Certificate". Das Vorgänger-Zertifikate wurde aber nicht gelöscht.

Das Skript hat sich auch nicht dem "Self Signed"-Zertifikat des Servers angenommen, welches ebenfalls schon abgelaufen war. Das Skript "MonitorExchangeAuthCertificate" überwacht nur das OAUTH-Zertifikat

Übrigens protokolliert das Skript eine Aktivitäten auch im Verzeichnis C:\Program Files\Microsoft\Exchange Server\V15\Logging\AuthCertificateMonitoring des Servers.

Automatismus

Microsoft hat dem Skript neben der reinen Prüfung und Aktualisierung sogar noch einen "Automatic"-Mode mitgegeben. Sie können das Skript über Parameter anweisen, dass es sich selbst als "geplanten Task" einrichtet, der die Überwachung übernimmt, Mails versendet etc. Nicht umsonst ist das Script über 180kByte groß.

Als geplanter Task legt das Skript ein AD-Konto (SystemMailbox{b963af59-3975-4f92-9d58-ad0b1fe3a1a3}) an, welches in die ebenfalls neu angelegte RBAC-Role Group "Auth Certificate Management" aufgenommen und lokaler Administrator auf dem Exchange Server wird.

Vielleicht nutzt Microsoft dieses Skript auf ihren Servern in der Cloud aber ich bin relativ sicher, dass ganz wenige Administratoren das Skript so einsetzen werden, eher etwas Grips in die eigene Überwachung der Zertifikate stecken und alle paar Jahre mal interaktiv das Zertifikat aktualisieren.

Weitere Links