AD FS: SSL-Zertifikat erneuern und austauschen (PowerShell)
AD-FS-Zertifikat austauschen mit Set-AdfsSslCertificate und Set-AdfsAlternateTlsClientBinding, WAP aktualisieren, Schlüsselzugriff prüfen und die Farm verifizieren.
AD FS stellt seine TLS-Endpunkte über HTTP.sys bereit, nicht über eine IIS-Website. Aktuelle AD-FS-Versionen verwalten diese Bindungen mit eigenen PowerShell-Cmdlets. Das TLS-Zertifikat ist außerdem unabhängig von den Tokensignatur- und Tokenentschlüsselungszertifikaten - wer das eine austauscht, muss die anderen nicht anfassen.
Voraussetzungen
- Besorgen Sie eine PFX-Datei mit privatem Schlüssel, der EKU Serverauthentifizierung
und dem Namen des Verbunddienstes im SAN. Nutzt die Farm den alternativen
TLS-Clientbindungsmodus, muss auch
certauth.<Verbunddienstname>enthalten sein. - Notieren Sie
Get-AdfsProperties,Get-AdfsFarmInformation,Get-AdfsSslCertificate, den alten Fingerabdruck und die WAP-Server. - Sie brauchen lokale Administratorrechte auf jedem Verbundserver und jedem Web Application Proxy (WAP).
- Sichern Sie die AD-FS-Konfiguration und planen Sie ein rollierendes Wartungsfenster. Lassen Sie immer mindestens einen funktionierenden Knoten im Load-Balancer-Pool.
Die Zertifikatsrollen in AD FS
Das TLS/SSL-Zertifikat schützt die HTTPS-Endpunkte und wird mit
Set-AdfsSslCertificate bzw. im alternativen Clientbindungsmodus mit
Set-AdfsAlternateTlsClientBinding geändert. Das in der AD-FS-Verwaltung angezeigte
Dienstkommunikationszertifikat ist Metadaten für die Dienstkommunikation und nicht
die HTTP.sys-Bindung. Tokensignatur- und Tokenentschlüsselungszertifikate
schützen Token und erfordern einen abgestimmten Wechsel mit den Verbundpartnern; sie
sollten bei einer normalen TLS-Erneuerung nicht geändert werden.
AD FS bindet üblicherweise den Verbunddienstnamen auf Port 443, localhost auf 443, die
Namen der Geräteregistrierung und einen Endpunkt für die
Clientzertifikat-Authentifizierung. Im Standardbindungsmodus nutzt diese
Authentifizierung einen eigenen Port wie 49443, im alternativen Modus
certauth.<Name> auf 443 mit SNI.
Zertifikat Schritt für Schritt austauschen
-
Importieren Sie die PFX-Datei auf jedem AD-FS- und WAP-Server in
Cert:\LocalMachine\My:$password = Read-Host "PFX password" -AsSecureString $cert = Import-PfxCertificate -FilePath C:\secure\adfs.pfx ` -CertStoreLocation Cert:\LocalMachine\My -Password $password $thumbprint = $cert.Thumbprint Get-Item "Cert:\LocalMachine\My\$thumbprint" | Format-List Subject,DnsNameList,EnhancedKeyUsageList,HasPrivateKey,NotAfter -
Bestimmen Sie die Farm-Eigenschaften, bevor Sie ein Cmdlet wählen:
Get-AdfsSslCertificate # aktuelle Bindungen Get-AdfsSyncProperties | Format-List Role # PrimaryComputer = primärer Server Get-AdfsFarmInformation | Format-List CurrentFarmBehavior- Bindungsmodus: Eine Bindung für
certauth.<Verbunddienstname>auf Port 443 bedeutet alternativen TLS-Clientbindungsmodus (Schritt 4); eine Bindung auf Port 49443 den Standardmodus (Schritt 3). - Farmverhaltensebene:
3ist Windows Server 2016,4Windows Server 2019 und neuer. Die farmweite Aktualisierung in Schritt 3 braucht mindestens3und läuft auf dem primären Server.
- Bindungsmodus: Eine Bindung für
-
Auf einem primären Verbundserver ab Windows Server 2016 mit Farmverhaltensebene 2016 aktualisieren Sie den Standardbindungsmodus einmal für die ganze Farm:
Set-AdfsSslCertificate -Thumbprint $thumbprintDas Cmdlet arbeitet über mehrere Knoten und nutzt PowerShell-Remoting; TCP 5985 muss vom primären Server zu den anderen Knoten erreichbar sein. Unter Windows Server 2012 R2 führen Sie
Set-AdfsSslCertificatestattdessen auf jedem Verbundserver aus. -
Nutzt die Farm den alternativen TLS-Clientbindungsmodus, verwenden Sie das passende Farm-Cmdlet statt des Befehls für den Standardmodus:
Set-AdfsAlternateTlsClientBinding -Thumbprint $thumbprint -
Nach der AD-FS-Farm auf jedem WAP-Server ausführen:
Set-WebApplicationProxySslCertificate -Thumbprint $thumbprintVerhindert eine bereits abgelaufene Vertrauensstellung diesen Schritt, beschreibt Microsoft den Neuaufbau mit
Install-WebApplicationProxyund dem Verbunddienstnamen. -
Zugriff auf den privaten Schlüssel prüfen. Ab Server 2016 geben die TLS-Cmdlets dem Dienstprinzipal
adfssrvLesezugriff auf den Schlüssel; eine zusätzliche ACL für das konfigurierte Domänendienstkonto ist für die TLS-Bindung normalerweise nicht nötig. Bei älteren Versionen, eigenen Zertifikatsrollen oder nach einem manuellen Import prüfen Sie, ob das laufende Konto den Schlüssel lesen kann. So finden Sie es:Get-CimInstance Win32_Service -Filter "Name='adfssrv'" | Select-Object Name,StartName,StateErteilen Sie in
certlm.mscüber Alle Aufgaben > Private Schlüssel verwalten nur Lesen, wenn Version und Rolle es erfordern. Ein Zertifikat kann gebunden erscheinen und trotzdem scheitern, wenn AD FS nicht auf den privaten Schlüssel zugreifen kann. -
Prüfen Sie auf jedem AD-FS-Server, ob jede Bindung das neue Zertifikat trägt:
netsh http show sslcertJeder AD-FS-Eintrag sollte den neuen Fingerabdruck als Certificate Hash zeigen. Dann ist kein Neustart nötig. Zeigt ein Knoten noch den alten, nehmen Sie ihn aus dem Load Balancer und starten nur dort AD FS neu:
Restart-Service adfssrvStarten Sie nie die ganze Farm gleichzeitig neu.
HTTP.sys und ältere Anleitungen
Nutzen Sie HTTP.sys-Befehle bei aktuellen AD-FS-Versionen zum Prüfen, nicht zum routinemäßigen Austauschen der Bindungen:
netsh http show sslcert
Get-AdfsSslCertificateÄltere AD-FS-Anleitungen lassen netsh http-Bindungen mit einer AppID löschen und neu
anlegen. Das direkte Bearbeiten ist nur für die AD-FS-Version und den Bindungsmodus
richtig, deren Microsoft-Anleitung es ausdrücklich vorsieht. In modernen Farmen
übersieht ein Umgehen von Set-AdfsSslCertificate leicht localhost-,
Geräteregistrierungs-, Clientauthentifizierungs-, SNI- oder andere Farmbindungen, und
die Änderung erreicht die anderen Knoten eventuell nicht.
Produktspezifische Hinweise
Für die farmweite Aktualisierung ab Server 2016 muss der primäre Verbundserver selbst mindestens Server 2016 sein und die Farmverhaltensebene die Funktion unterstützen. Prüfen Sie jeden Knoten, auch wenn der Befehl nur einmal läuft. Unter Server 2012 R2 bleibt es eine Aufgabe pro Knoten.
WAP-Zertifikate sind lokal und brauchen das WAP-Cmdlet auf jedem Proxy. Verwenden Sie auf AD FS und WAP dasselbe Zertifikat, sofern Design und Microsoft-Vorgaben keine getrennten Namen vorsehen. Tauschen Sie Tokensignatur- und Tokenentschlüsselungszertifikate nicht nebenbei aus; ihr Wechsel betrifft vertrauende Seiten und Anspruchsanbieter.
Neues Zertifikat prüfen
Get-AdfsSslCertificate | Format-Table HostName,PortNumber,CertificateHash
netsh http show sslcert
Get-Service adfssrvPrüfen Sie von außerhalb der Farm sowohl den TLS-Endpunkt als auch die Antwort der Anwendung:
openssl s_client -connect fs.example.com:443 -servername fs.example.com -showcerts
curl -fsS https://fs.example.com/FederationMetadata/2007-06/FederationMetadata.xmlTesten Sie die Anmeldung, die Geräte- bzw. Clientzertifikat-Authentifizierung (falls genutzt), den über WAP veröffentlichten Endpunkt und jeden Knoten direkt. Prüfen Sie, ob die Verbundmetadaten weiterhin die erwarteten Tokenzertifikate enthalten - die TLS-Änderung darf sie nicht unbemerkt verändern.
Rollback
Verwenden Sie den notierten alten Fingerabdruck mit denselben Cmdlets - zuerst die Farm, dann jeden WAP:
Set-AdfsSslCertificate -Thumbprint <alter-fingerabdruck> # bzw. Set-AdfsAlternateTlsClientBinding
Set-WebApplicationProxySslCertificate -Thumbprint <alter-fingerabdruck> # auf jedem WAPPrüfen Sie die Bindungen wie in Schritt 7 und testen Sie Metadaten und Anmeldung erneut. Das geht nur, solange das alte Zertifikat noch installiert und gültig ist - behalten Sie es, bis alle Farm- und Proxy-Endpunkte bestätigt sind.
Häufige Probleme
- Das Zertifikat liegt im Speicher des aktuellen Benutzers statt des lokalen Computers oder hat keinen privaten Schlüssel.
- Der Verbunddienstname oder der
certauth-Name fehlt in den SANs. - Das Farm-Cmdlet ab Server 2016 erreicht die anderen Knoten nicht per PowerShell-Remoting.
- Die WAP-Knoten wurden nach der AD-FS-Farm nicht aktualisiert.
- Es wurde nur eine
netsh-Bindung geändert, die übrigen AD-FS-Bindungen sind veraltet. - Die TLS-Erneuerung wird mit dem Wechsel des Dienstkommunikations- oder Tokenzertifikats verwechselt.
Zertifikatstausch mit aethercert automatisieren
Das aethercert-Deployment-Ziel für AD FS importiert das Zertifikat, kann einem
konfigurierten Dienstkonto Lesezugriff auf den privaten Schlüssel geben und ruft
Set-AdfsSslCertificate für die Dienstkommunikation bzw. Set-AdfsCertificate für
Tokensignatur und Tokenentschlüsselung auf. Microsoft unterscheidet die TLS/SSL-Bindung
der Farm vom Dienstkommunikationszertifikat in der AD-FS-Verwaltung; prüfen Sie also,
ob der gewählte Modus zu dem Zertifikat passt, das Sie austauschen wollen.
Farmmodus, WAP-Umfang und die Auswirkungen eines Tokenzertifikat-Wechsels erfordern
weiterhin eine bewusste Planung.
Unter Deployment-Ziele finden Sie die Felder dieser Vorlage, die Voraussetzungen auf dem Host und den Stand der Verifizierung.
Quellen
Microsoft Exchange Server
Exchange-Zertifikat erneuern: PFX mit Import-ExchangeCertificate importieren, IIS, SMTP, POP und IMAP zuweisen, Connectoren anpassen und jedes Protokoll prüfen.
Remote Desktop (RDP)
Zertifikat des RDP-Listeners eines einzelnen Windows-Servers ändern: SSLCertificateSHA1Hash per PowerShell/WMI oder Registry setzen, NETWORK SERVICE Schlüsselzugriff geben, prüfen.