Exchange Zertifikat Fehler: Kein Parameter für ‚FileName‘ gefunden
Die Verwaltung von Zertifikaten in Microsoft Exchange Server wurde in den letzten Jahren durch gezielte Änderungen in kumulativen Updates (CU) grundlegend überarbeitet. Besonders im Zuge von Vorbereitungen auf Exchange Server Subscription Edition (SE) und den damit verbundenen Migrationen auf Exchange Server 2019 begegnen Administratoren vermehrt einem spezifischen Fehler beim Zertifikatsimport:
Es wurde kein Parameter gefunden, der dem Parameternamen "FileName" entspricht.
Warum dieser Fehler auftritt
Ab Exchange Server 2016 CU23 und Exchange Server 2019 CU12 wurde die Nutzung von UNC-Pfaden („Universal Naming Convention“) für Zertifikatsoperationen entfernt. Diese Änderung ist Teil von Microsofts Bemühungen, Sicherheitsrisiken durch potenziell unsichere Pfade zu reduzieren.
Wie der Zertifikatsimport bisher funktioniert hat
Vor den genannten Updates konnten Zertifikate unkompliziert mit dem folgenden Befehl importiert werden:
Import-ExchangeCertificate -FileName "\\server\share\certificate.pfx" -Password (ConvertTo-SecureString -String "password" -AsPlainText -Force)
Hierbei wurde die Zertifikatsdatei über einen Netzwerkpfad (UNC-Pfad) bereitgestellt. Dies war praktisch, aber auch anfällig für Angriffe.
Die neue Methode: So funktioniert es jetzt
Mit den Updates wurde der Parameter FileName entfernt. Stattdessen müssen Zertifikate über den Parameter FileData als Byte-Array importiert werden. Ein Beispiel für den neuen Ansatz:
Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path "C:\path\certificate.pfx" -Encoding byte)) -Password (ConvertTo-SecureString -String "password" -AsPlainText -Force)
Weitere Anpassungen bei Exchange-Zertifikaten
Nicht nur der Import, sondern auch andere Operationen wurden angepasst sondern auch bei der Erstellung von Zertifikatsanforderungen. Auch hier wurde die Nutzung von UNC-Pfaden entfernt. Der neue Ansatz sieht vor, dass Anforderungen lokal erstellt und gespeichert werden:
$request = New-ExchangeCertificate -GenerateRequest -SubjectName "CN=example.com" -DomainName "example.com,www.example.com"
Set-Content -Path "C:\path\request.req" -Value $request
Export von Zertifikaten:
Anstatt direkt eine Datei zu exportieren, wird das Zertifikat nun als Byte-Array exportiert und anschließend lokal gespeichert:
$cert = Export-ExchangeCertificate -Thumbprint <Thumbprint> -Password (ConvertTo-SecureString -String "password" -AsPlainText -Force) -BinaryEncoded
Set-Content -Path "C:\path\certificate.pfx" -Value $cert.FileData -Encoding byte
Warum diese Änderungen wichtig sind
Microsoft möchte mit diesen Anpassungen die Sicherheit von Exchange Server verbessern. Netzwerkpfade waren ein Schwachpunkt, da sie potenziell von Angreifern ausgenutzt werden konnten. Durch die Einschränkung auf lokale Pfade und Byte-Arrays wird das Risiko deutlich reduziert.