Hallo,
ich bin mit meinem Exchange Server von 2016 (Windows 2016) auf einen Windows Server 2019 und Exchange 2019 umgezogen.
Das Skript CertificateAssistant habe ich unter 2016 über Jahre sehr erfolgreich genutzt! Hat immer perfekt funktioniert! Vielen Dank nochmal dafür!
Nun schlägt das Skript mit folgendem LOG leider fehl:
TimeStamp;ScriptSection;Type;Message;ErrorDetails
01.03.2020 15:42:45;System;Info;Geting system parameters;
01.03.2020 15:42:45;System;Info;Certificate Assistant Exchange 2019 Version;
01.03.2020 15:42:45;System;Info;PowerShell Version: 5.1.17763.1007 OSVersion: 10.0.17763.0;
01.03.2020 15:42:45;Check Posh-ACME;Info;Check if Module installed;
01.03.2020 15:42:45;Load Posh-ACME;Info;Posh-ACME is installed, try to load it;
01.03.2020 15:42:45;Load Posh-ACME;Info;Module Import was successfull, PoshACMEVersion 3.12.0;
01.03.2020 15:42:45;Load Exchange SnapIns;Info;Try to load Exchange SnapIns;
01.03.2020 15:42:45;Load Exchange SnapIns;Info;Sucessfully loaded Exchange SnapIns;
01.03.2020 15:42:45;IIS;Info;Trying to create .Well-Known Directory;
01.03.2020 15:42:45;IIS;Info;Well-Known Folder already exists, skipping;
01.03.2020 15:42:45;IIS;Info;Added Mime Type to Well-Known Folder;
01.03.2020 15:42:45;IIS;Info;Changing Let's Encrypt IIS directory to http;
01.03.2020 15:42:46;IIS;Info;Successfully changed Let's Encrypt IIS directory to http;
01.03.2020 15:42:46;IIS;Info;Checking Let's Encrypt IIS directory to accept validation by http request;
01.03.2020 15:42:46;IIS;Info;.well-known directory accepts http;
01.03.2020 15:42:46;Exchange FQDNs;Info;Getting Exchange FQDNs;
01.03.2020 15:42:46;Exchange FQDNs;Info;Getting local Exchange Server Name;
01.03.2020 15:42:46;Exchange FQDNs;Info;Local Exchange Name PEANUTS;
01.03.2020 15:42:46;Exchange FQDNs;Info;Getting Autodiscover Hostname;
01.03.2020 15:42:46;Exchange FQDNs;Info;Autodiscover Hostname autodiscover.XXXX.de;
01.03.2020 15:42:46;Exchange FQDNs;Info;Getting Exchange Outlook Anywhere External FQDN;
01.03.2020 15:42:46;Exchange FQDNs;Info;Exchange Outlook Anywhere External FQDN mail.XXXX.de;
01.03.2020 15:42:46;Exchange FQDNs;Info;Getting Exchange Outlook Anywhere Internal FQDN;
01.03.2020 15:42:47;Exchange FQDNs;Info;Exchange Outlook Anywhere Internal FQDN mail.XXXX.de;
01.03.2020 15:42:47;Exchange FQDNs;Info;Getting Exchange OAB External FQDN;
01.03.2020 15:42:48;Exchange FQDNs;Info;Exchange OAB External FQDN mail.XXXX.de;
01.03.2020 15:42:48;Exchange FQDNs;Info;Getting Exchange OAB Internal FQDN;
01.03.2020 15:42:49;Exchange FQDNs;Info;Exchange OAB Internal FQDN mail.XXXX.de;
01.03.2020 15:42:49;Exchange FQDNs;Info;Getting Exchange EAS Internal FQDN;
01.03.2020 15:42:50;Exchange FQDNs;Info;Exchange EAS Internal FQDN mail.XXXX.de;
01.03.2020 15:42:50;Exchange FQDNs;Info;Getting Exchange EAS External FQDN;
01.03.2020 15:42:52;Exchange FQDNs;Info;Exchange EAS External FQDN mail.XXXX.de;
01.03.2020 15:42:52;Exchange FQDNs;Info;Getting Exchange EWS Internal FQDN;
01.03.2020 15:42:53;Exchange FQDNs;Info;Exchange EWS Internal FQDN mail.XXXX.de;
01.03.2020 15:42:53;Exchange FQDNs;Info;Getting Exchange EWS External FQDN;
01.03.2020 15:42:54;Exchange FQDNs;Info;Exchange EWS External FQDN mail.XXXX.de;
01.03.2020 15:42:54;Exchange FQDNs;Info;Getting Exchange ECP Internal FQDN;
01.03.2020 15:42:55;Exchange FQDNs;Info;Exchange EWS Internal FQDN mail.XXXX.de;
01.03.2020 15:42:55;Exchange FQDNs;Info;Getting Exchange ECP External FQDN;
01.03.2020 15:42:57;Exchange FQDNs;Info;Exchange ECP External FQDN mail.XXXX.de;
01.03.2020 15:42:57;Exchange FQDNs;Info;Getting Exchange OWA Internal FQDN;
01.03.2020 15:42:58;Exchange FQDNs;Info;Exchange OWA Internal FQDN mail.XXXX.de;
01.03.2020 15:42:58;Exchange FQDNs;Info;Getting Exchange OWA External FQDN;
01.03.2020 15:42:59;Exchange FQDNs;Info;Exchange OWA ExternalFQDN mail.XXXX.de;
01.03.2020 15:42:59;Exchange FQDNs;Info;Getting Exchange MAPI Internal FQDN;
01.03.2020 15:43:00;Exchange FQDNs;Info;Exchange MAPI Internal FQDN mail.XXXX.de;
01.03.2020 15:43:00;Exchange FQDNs;Info;Getting Exchange MAPI External FQDN;
01.03.2020 15:43:00;Exchange FQDNs;Info;Exchange MAPI External FQDN mail.XXXX.de;
01.03.2020 15:43:00;Exchange FQDNs;Info;Make them unique;
01.03.2020 15:43:00;Exchange FQDNs;Info;FQDNs are unique;
01.03.2020 15:43:00;LE System;Info;Setting LE Mode;
01.03.2020 15:43:00;LE System;Info;Setting LE Mode to PRODUCTION MODE (LIVE SYSTEM);
01.03.2020 15:43:00;LE System;Info;Checking for existing LE Account;
01.03.2020 15:43:00;LE System;Info;Found a existing LE Account;
01.03.2020 15:43:00;LE Certificate;Info;Trying to create a new order for a certificate;
01.03.2020 15:43:05;LE Certificate;Info;Successfully ordered certificate;
01.03.2020 15:43:05;LE System;Info;Creating Autorisation files for LE verification;
01.03.2020 15:43:05;LE System;Info;Asking LE to verify the order;
01.03.2020 15:43:06;LE System;Info;Successfully informed LE to verify the order;
01.03.2020 15:43:06;LE System;INFO;Let's give LE some time to validate (1 min);1 min
01.03.2020 15:44:06;LE System;INFO;Time to wake up, need coffee!;
01.03.2020 15:44:06;LE System;INFO;Let's check the authorization;
01.03.2020 15:44:06;LE System;INFO;Authorization for autodiscover.XXXX.de is valid;
01.03.2020 15:44:06;LE System;INFO;Authorization for mail.XXXX.de is valid;
01.03.2020 15:44:06;LE System;INFO;Let's refresh the order;
01.03.2020 15:44:06;LE System;INFO;Let's check if order is ready;
01.03.2020 15:44:06;LE System;INFO;Order is ready;
01.03.2020 15:44:06;LE System;INFO;Let's get the certificate;
01.03.2020 15:44:08;LE System;INFO;Getting certificate was successfull. Thumbprint is D2DBDFF97809A5A2C49041DB7BBF7FCCF86AB96B;
01.03.2020 15:44:08;LE System;INFO;Let's check if the PFX is present;
01.03.2020 15:44:08;Cert Export;Info;PFX D2DBDFF97809A5A2C49041DB7BBF7FCCF86AB96B verified successfully;
01.03.2020 15:44:08;LE System;INFO;CleanUp Mime Type;
01.03.2020 15:44:08;LE System;INFO;CleanUp successfull;
01.03.2020 15:44:08;Exchange;Info;Lets try to enable certificate for Exchange Server;
01.03.2020 15:44:08;Exchange;Info;Exchange Server Version: Version 15.2 (Build 464.5);
01.03.2020 15:44:08;Exchange;Error;Failed to import and enable Certificate;Das Argument kann nicht an den Parameter "String" gebunden werden, da es sich um eine leere Zeichenfolge handelt.
01.03.2020 15:44:08;SendMail;Info;Try to send email with logfile;
01.03.2020 15:44:08;SendMail;Info;E-Mail send successfully initiated;
01.03.2020 15:44:08;End;Info;End of script;
Bin für jede Hilfe dankbar!!!
Vielen Dank!
Per
Wenn du die .pfx Datei ausfindig gemacht hast (vermutlich im selben Verzeichnis oder AppData\Local\Temp), probiere es doch mal mit einem manuellen Import:
$ImportPassword = ConvertTo-SecureString -String PASSWORT_FUER_PFX_DATEI -Force –AsPlainText
Import-ExchangeCertificate -FileName C:\Pfad_zur\PFX_DATEI.pfx -FriendlyName mail.XXXX.de -Password $ImportPassword -PrivateKeyExportable:$true | Enable-ExchangeCertificate -Services "SMTP, IMAP, POP, IIS" –force
Gelingt das per Exchange Management Shell?
Ansonsten mal Stück für Stück ausprobieren und erstmal nur das Zertifikat importieren, ohne es zu aktivieren:
$ImportPassword = ConvertTo-SecureString -String PASSWORT_FUER_PFX_DATEI -Force –AsPlainText
Import-ExchangeCertificate -FileName C:\Pfad_zur\PFX.pfx -FriendlyName mail.XXXX.de -Password $ImportPassword -PrivateKeyExportable:$true
Letzte Möglichkeit, den Import und das zuweisen der Dienste einmal per ECP probieren.
So ließe sich ein wenig Ursachenforschung betreiben.
Gruß
Mathias
@Mathias: vielen Dank für Deine Hilfestellung!
Leider komme ich überhaupt nicht weiter....
Es wird einfach keine .PFX Datei erstellt!
Das einzige was ich sehe, sind zwei Dateien in Verzeichnis C:\inetpub\wwwroot\Well-Known\acme-challenge die angelegt werden und sehr kryptische Namen mit Inhalt haben....z.B. jw2eOXtZp300m7BD2_1sVRimgz7B5np95jIMg6h6gEg
Fehlt mir ggf. irgendein Tool etc. was noch installiert werden muss?
Bin für jede Hilfe dankbar, da mein Zertifikat nächste Woche abläuft! ?
DANKE!
Per
Als schnelle Hilfe kannst du dir über Certify the Web ( https://certifytheweb.com ) erstmal ein Zertifikat holen und per mmc.exe (Zertifikat SnapIn -> Computerkonto) auf dem Server, auf dem Exchange läuft, importieren. Dann kannst du es im ECP des Exchange importieren und Dienste zuweisen. Vorausgesetzt, darüber klappt die Dienste-Zuweisung. Per Script scheint es ja genau an dem Punkt zu haken.
Um den Rest kümmern wir uns schon noch. Gemäß des Log deines Scripts ist die PFX ja da, du kannst mal mit Get-ExchangeCertificate schauen, ob da ein Zertifikat mit dem Thumbprint D2DBDFF97809A5A2C49041DB7BBF7FCCF86AB96B aufgeführt ist.
Gruß
Mathias
@Mathias: vielen Dank für Deine schnelle Hilfe!
ich habe das Tool runtergeladen und gestartet....alle notwendigen Angaben...
Nun kommt aber das:
2020-03-06 17:55:16.932 +01:00 [INF] Certify/4.1.8.0 (Windows; Microsoft Windows NT 6.2.9200.0)
2020-03-06 17:55:16.932 +01:00 [INF] Beginning Certificate Request Process: Exchange Back End using ACME Provider:Certes
2020-03-06 17:55:16.932 +01:00 [INF] Registering Domain Identifiers
2020-03-06 17:55:16.932 +01:00 [ERR] BeginCertificateOrder: creating/retrieving order. Retries remaining:2
2020-03-06 17:55:17.836 +01:00 [ERR] BeginCertificateOrder: error creating order. Retries remaining:1 :: Certes.AcmeRequestException: Fail to load resource from 'https://acme-v02.api.letsencrypt.org/acme/new-order'.
urn:ietf:params:acme:error:rateLimited: Error creating new order :: too many certificates already issued for exact set of domains: autodiscover.XXXXX.de,mail.XXXXX.de: see https://letsencrypt.org/docs/rate-limits/
bei Certes.Acme.IAcmeHttpClientExtensions.<Post>d__0`1.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei Certes.AcmeContext.<NewOrder>d__19.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei Certify.Providers.Certes.CertesACMEProvider.<BeginCertificateOrder>d__26.MoveNext()
2020-03-06 17:55:18.837 +01:00 [ERR] BeginCertificateOrder: creating/retrieving order. Retries remaining:0
2020-03-06 17:55:19.197 +01:00 [ERR] BeginCertificateOrder: error creating order. Retries remaining:-1 :: Certes.AcmeRequestException: Fail to load resource from 'https://acme-v02.api.letsencrypt.org/acme/new-order'.
urn:ietf:params:acme:error:rateLimited: Error creating new order :: too many certificates already issued for exact set of domains: autodiscover.XXXXX.de,mail.XXXXX.de: see https://letsencrypt.org/docs/rate-limits/
bei Certes.Acme.IAcmeHttpClientExtensions.<Post>d__0`1.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei Certes.AcmeContext.<NewOrder>d__19.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
bei Certify.Providers.Certes.CertesACMEProvider.<BeginCertificateOrder>d__26.MoveNext()
2020-03-06 17:55:20.198 +01:00 [INF] Failed to create certificate order: Failed to begin certificate order.
2020-03-06 17:55:20.797 +01:00 [INF] Failed to create certificate order: Failed to begin certificate order.
Es liegen wohl von meinen vielen Tests "alte orders" :-)
Wie kann ich diese löschen und ganz frisch starten?
Merci!
Per
Hallo,
ich verstehe es so langsam überhaupt nicht mehr!?!?
Aktuell ist folgendes aktiv:
[PS] C:\Windows\system32>Get-ExchangeCertificate
Thumbprint Services Subject
---------- -------- -------
772E09B23119A38EFDDFF210B92B34DD5E4A5665 IP.WS.. CN=autodiscover.XXXX.de
Dieses Zertifikat wurde mit dem Tool CertificateAssistant_v3_EX2019.ps1 erstellt! Hier das LOG dazu:
15.12.2019 16:43:31;System;Info;Geting system parameters;
15.12.2019 16:43:31;System;Info;Certificate Assistant Exchange 2019 Version;
15.12.2019 16:43:31;System;Info;PowerShell Version: 5.1.17763.771 OSVersion: 10.0.17763.0;
15.12.2019 16:43:31;Check Posh-ACME;Info;Check if Module installed;
15.12.2019 16:43:31;Load Posh-ACME;Info;Posh-ACME is installed, try to load it;
15.12.2019 16:43:31;Load Posh-ACME;Info;Module Import was successfull, PoshACMEVersion 3.12.0;
15.12.2019 16:43:31;Load Exchange SnapIns;Info;Try to load Exchange SnapIns;
15.12.2019 16:43:31;Load Exchange SnapIns;Info;Sucessfully loaded Exchange SnapIns;
15.12.2019 16:43:31;IIS;Info;Trying to create .Well-Known Directory;
15.12.2019 16:43:31;IIS;Info;Well-Known Folder already exists, skipping;
15.12.2019 16:43:31;IIS;Info;Added Mime Type to Well-Known Folder;
15.12.2019 16:43:31;IIS;Info;Changing Let's Encrypt IIS directory to http;
15.12.2019 16:43:32;IIS;Info;Successfully changed Let's Encrypt IIS directory to http;
15.12.2019 16:43:32;IIS;Info;Checking Let's Encrypt IIS directory to accept validation by http request;
15.12.2019 16:43:33;IIS;Info;.well-known directory accepts http;
15.12.2019 16:43:33;Exchange FQDNs;Info;Getting Exchange FQDNs;
15.12.2019 16:43:33;Exchange FQDNs;Info;Getting local Exchange Server Name;
15.12.2019 16:43:33;Exchange FQDNs;Info;Local Exchange Name PEANUTS;
15.12.2019 16:43:33;Exchange FQDNs;Info;Getting Autodiscover Hostname;
15.12.2019 16:43:33;Exchange FQDNs;Info;Autodiscover Hostname autodiscover.XXXX.de;
15.12.2019 16:43:33;Exchange FQDNs;Info;Getting Exchange Outlook Anywhere External FQDN;
15.12.2019 16:43:33;Exchange FQDNs;Info;Exchange Outlook Anywhere External FQDN mail.XXXX.de;
15.12.2019 16:43:33;Exchange FQDNs;Info;Getting Exchange Outlook Anywhere Internal FQDN;
15.12.2019 16:43:34;Exchange FQDNs;Info;Exchange Outlook Anywhere Internal FQDN mail.XXXX.de;
15.12.2019 16:43:34;Exchange FQDNs;Info;Getting Exchange OAB External FQDN;
15.12.2019 16:43:36;Exchange FQDNs;Info;Exchange OAB External FQDN mail.XXXX.de;
15.12.2019 16:43:36;Exchange FQDNs;Info;Getting Exchange OAB Internal FQDN;
15.12.2019 16:43:37;Exchange FQDNs;Info;Exchange OAB Internal FQDN mail.XXXX.de;
15.12.2019 16:43:37;Exchange FQDNs;Info;Getting Exchange EAS Internal FQDN;
15.12.2019 16:43:38;Exchange FQDNs;Info;Exchange EAS Internal FQDN mail.XXXX.de;
15.12.2019 16:43:38;Exchange FQDNs;Info;Getting Exchange EAS External FQDN;
15.12.2019 16:43:40;Exchange FQDNs;Info;Exchange EAS External FQDN mail.XXXX.de;
15.12.2019 16:43:40;Exchange FQDNs;Info;Getting Exchange EWS Internal FQDN;
15.12.2019 16:43:41;Exchange FQDNs;Info;Exchange EWS Internal FQDN mail.XXXX.de;
15.12.2019 16:43:41;Exchange FQDNs;Info;Getting Exchange EWS External FQDN;
15.12.2019 16:43:42;Exchange FQDNs;Info;Exchange EWS External FQDN mail.XXXX.de;
15.12.2019 16:43:42;Exchange FQDNs;Info;Getting Exchange ECP Internal FQDN;
15.12.2019 16:43:43;Exchange FQDNs;Info;Exchange EWS Internal FQDN mail.XXXX.de;
15.12.2019 16:43:43;Exchange FQDNs;Info;Getting Exchange ECP External FQDN;
15.12.2019 16:43:44;Exchange FQDNs;Info;Exchange ECP External FQDN mail.XXXX.de;
15.12.2019 16:43:44;Exchange FQDNs;Info;Getting Exchange OWA Internal FQDN;
15.12.2019 16:43:45;Exchange FQDNs;Info;Exchange OWA Internal FQDN mail.XXXX.de;
15.12.2019 16:43:45;Exchange FQDNs;Info;Getting Exchange OWA External FQDN;
15.12.2019 16:43:47;Exchange FQDNs;Info;Exchange OWA ExternalFQDN mail.XXXX.de;
15.12.2019 16:43:47;Exchange FQDNs;Info;Getting Exchange MAPI Internal FQDN;
15.12.2019 16:43:48;Exchange FQDNs;Info;Exchange MAPI Internal FQDN mail.XXXX.de;
15.12.2019 16:43:48;Exchange FQDNs;Info;Getting Exchange MAPI External FQDN;
15.12.2019 16:43:48;Exchange FQDNs;Info;Exchange MAPI External FQDN mail.XXXX.de;
15.12.2019 16:43:48;Exchange FQDNs;Info;Make them unique;
15.12.2019 16:43:48;Exchange FQDNs;Info;FQDNs are unique;
15.12.2019 16:43:48;LE System;Info;Setting LE Mode;
15.12.2019 16:43:49;LE System;Info;Setting LE Mode to PRODUCTION MODE (LIVE SYSTEM);
15.12.2019 16:43:49;LE System;Info;Checking for existing LE Account;
15.12.2019 16:43:49;LE System;Warning;No LE Account was found, creating a new one;
15.12.2019 16:43:50;LE Certificate;Info;Trying to create a new order for a certificate;
15.12.2019 16:43:50;LE Certificate;Info;Successfully ordered certificate;
15.12.2019 16:43:50;LE System;Info;Creating Autorisation files for LE verification;
15.12.2019 16:43:51;LE System;Info;Asking LE to verify the order;
15.12.2019 16:43:51;LE System;Info;Successfully informed LE to verify the order;
15.12.2019 16:43:51;LE System;INFO;Let's give LE some time to validate (1 min);1 min
15.12.2019 16:44:52;LE System;INFO;Time to wake up, need coffee!;
15.12.2019 16:44:52;LE System;INFO;Let's check the authorization;
15.12.2019 16:44:52;LE System;INFO;Authorization for autodiscover.XXXX.de is valid;
15.12.2019 16:44:52;LE System;INFO;Authorization for mail.XXXX.de is valid;
15.12.2019 16:44:52;LE System;INFO;Let's refresh the order;
15.12.2019 16:44:52;LE System;INFO;Let's check if order is ready;
15.12.2019 16:44:52;LE System;INFO;Order is ready;
15.12.2019 16:44:52;LE System;INFO;Let's get the certificate;
15.12.2019 16:44:54;LE System;INFO;Getting certificate was successfull. Thumbprint is 772E09B23119A38EFDDFF210B92B34DD5E4A5665;
15.12.2019 16:44:54;LE System;INFO;Let's check if the PFX is present;
15.12.2019 16:44:54;Cert Export;Info;PFX 772E09B23119A38EFDDFF210B92B34DD5E4A5665 verified successfully;
15.12.2019 16:44:54;LE System;INFO;CleanUp Mime Type;
15.12.2019 16:44:54;LE System;INFO;CleanUp successfull;
15.12.2019 16:44:54;Exchange;Info;Lets try to enable certificate for Exchange Server;
15.12.2019 16:44:55;Exchange;Info;Exchange Server Version: Version 15.2 (Build 464.5);
15.12.2019 16:44:56;Exchange;Info;Successfully imported and enabled Certificate;
15.12.2019 16:44:56;SendMail;Info;Try to send email with logfile;
15.12.2019 16:44:56;SendMail;Info;E-Mail send successfully initiated;
15.12.2019 16:44:56;End;Info;End of script;
Nun bekomme ich immer wieder diese Meldung:
06.03.2020 10:43:25;LE System;INFO;Getting certificate was successfull. Thumbprint is 5D1F0B0D4DFE1C389F49FD346A37DFAC7FF1BFF4;
06.03.2020 10:43:25;LE System;INFO;Let's check if the PFX is present;
06.03.2020 10:43:25;Cert Export;Info;PFX 5D1F0B0D4DFE1C389F49FD346A37DFAC7FF1BFF4 verified successfully;
06.03.2020 10:43:25;LE System;INFO;CleanUp Mime Type;
06.03.2020 10:43:25;LE System;INFO;CleanUp successfull;
06.03.2020 10:43:25;Exchange;Info;Lets try to enable certificate for Exchange Server;
06.03.2020 10:43:25;Exchange;Info;Exchange Server Version: Version 15.2 (Build 464.5);
06.03.2020 10:43:25;Exchange;Error;Failed to import and enable Certificate;Das Argument kann nicht an den Parameter "String" gebunden werden, da es sich um eine leere Zeichenfolge handelt.
06.03.2020 10:43:25;SendMail;Info;Try to send email with logfile;
06.03.2020 10:43:25;SendMail;Info;E-Mail send successfully initiated;
06.03.2020 10:43:25;End;Info;End of script;
Es scheint so zu sein, dass zu viele "order" bei letsencrypt liegen:
2020-03-06 17:53:46.710 +01:00 [ERR] BeginCertificateOrder: creating/retrieving order. Retries remaining:0
2020-03-06 17:53:47.041 +01:00 [ERR] BeginCertificateOrder: error creating order. Retries remaining:-1 :: Certes.AcmeRequestException: Fail to load resource from 'https://acme-v02.api.letsencrypt.org/acme/new-order'.
urn:ietf:params:acme:error:rateLimited: Error creating new order :: too many certificates already issued for exact set of domains: autodiscover.XXXXX.de,mail.XXXXX.de: see https://letsencrypt.org/docs/rate-limits/
bei Certes.Acme.IAcmeHttpClientExtensions.<Post>d__0`1.MoveNext()
Das kann ich aber überhaupt nicht nachvollziehen, da ich direkt beim ersten Versuch, das Zertifikat zu erneuten die gleiche Meldung bekommen habe.
Weiß jemand wie man die "order" sehen und ggf. löschen kann? Oder muss ich jetzt X Tage warten?
HILFE, HILFE, HILFE....
Danke!
Per
Das Zertifikat mit dem Fingerabdruck 772E09B23119A38EFDDFF210B92B34DD5E4A5665 scheint ja sauber abgeholt und zugewiesen worden zu sein.
Lass dir doch mal eine Übersicht über deine verfügbaren Zertifikate geben und schau, welche Dienste dem Zertifikat 772E...5665 zugewiesen sind:
Get-ExchangeCertificate | fl Thumbprint,Issuer,Subject,CertificateDomains,Services,NotBefore,NotAfter
Wenn dort das 772E...5665 auftaucht, ihm aber noch ein Dienst fehlt, der dir wichtig ist (allen voran IIS), dann weise ihm mal per Powershell die Dienste zu:
Enable-ExchangeCertificate -Thumbprint 772E09B23119A38EFDDFF210B92B34DD5E4A5665 -Services POP,IMAP,SMTP,IIS
Was die Limits angeht, kann ich dir auch nicht wirklich weiterhelfen. Vielleicht kann hier @franky unterstützend tätig werden :-)
Gruß
Mathias
Yep, genau das habe ich aus den LOGs lesen können. Am 15.12.2019 hat das Script noch das Zertifikat mit dem Fingerprint 772E09B23119A38EFDDFF210B92B34DD5E4A5665 erzeugt und in Exchange eingebunden....die notwendigen Dienste sind diesem Zertifikat zugewiesen, läuft seitdem auch perfekt! Keine Zertifikats Fehler beim Aufruf der OWA URL etc.
Nur dieses Zertifikat läuft am 14.03.2020 ab! Also wollte ich rechtzeitig ein neues erstellen...ABER nun tut das Skript nicht mehr ?, warum auch immer?!?
Ich bin z.Z. mit meinem Latein am Ende....
Danke trotzdem für Deine Hilfe!
Per
Liste uns doch mal bitte deine verfügbaren Zertifikate auf, Domains kannst du natürlich zensieren:
Get-ExchangeCertificate | fl Thumbprint,Issuer,Subject,CertificateDomains,Services,NotBefore,NotAfter
Dann schauen wir doch mal, welche dein Server aktuell zur Verfügung hat und probieren nochmals von Hand, ihm Dienste zuzuweisen.
Das Zertifikat mit dem Fingerabdruck D2DBDFF97809A5A2C49041DB7BBF7FCCF86AB96B wäre interessant, da schien es ja an der Zuweisung der Dienste zu scheitern - Das Zertifikat selbst scheint ja da zu sein (sofern du bislang nichts gelöscht hast).
Hi,
hier der Output:
[PS] C:\Windows\system32>
[PS] C:\Windows\system32>Get-ExchangeCertificate | fl Thumbprint,Issuer,Subject,CertificateDomains,Services,NotBefore,NotAfter
Neue Sitzung für implizite Remotevorgänge des Befehls "Get-ExchangeCertificate" wird erstellt...
Thumbprint : 772E09B23119A38EFDDFF210B92B34DD5E4A5665
Issuer : CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
Subject : CN=autodiscover.XXXXX.de
CertificateDomains : {autodiscover.XXXXX.de, mail.XXXXX.de}
Services : IMAP, POP, IIS, SMTP
NotBefore : 15.12.2019 15:44:53
NotAfter : 14.03.2020 15:44:53
ich habe den ganzen Server nach einem Zertifikat D2DBDFF97809A5A2C49041DB7BBF7FCCF86AB96B durchsucht, aber ich finde überhaupt keine Datei die irgendwie passen würde...
Wenn ich die LOGs richtig verstehe, wird dieses Zertifikat überhaupt nicht erst erstellt! Darum kommt dann wohl auch Das Argument kann nicht an den Parameter "String" gebunden werden, da es sich um eine leere Zeichenfolge handelt.
Ich denke nicht, dass es ein Problem mit dem Tools von Franky ist!
In einem der LOGs steht ja dies:
2020-03-06 17:53:47.041 +01:00 [ERR] BeginCertificateOrder: error creating order. Retries remaining:-1 :: Certes.AcmeRequestException: Fail to load resource from 'https://acme-v02.api.letsencrypt.org/acme/new-order'.
urn:ietf:params:acme:error:rateLimited: Error creating new order :: too many certificates already issued for exact set of domains: autodiscover.XXXXX.de,mail.XXXXX.de
Aber warum? Ich habe seit dem 15.12.2019 das Tool nicht mehr angerührt und auch kein Zertifikat angefordert!?
Danke
Per
Ich habe gerade etwas gelesen, das dir VIELLEICHT helfen kann.
Ändere im Script doch bitte mal zwei Zeilen ab:
$DetermineExchangeFQDNs = $false
$CustomFQDNs = @("mail.XXXXX.de","autodiscover.XXXXX.de","exchange.XXXXX.de")
sprich, häng zusätzlich zu den benötigten mail. und autodiscover. noch eine dritte Subdomain mit dran, für die das Zertifikat ausgestellt werden soll.
Bereite das externe DNS entsprechend so vor, das der Eintrag ebenfalls richtig aufgelöst wird und beantrage dann nochmal ein Zertifikat.
Zitat: "If you have, or can create, an additional subdomain, you can add that to the certificate request and then it’s no longer the “exact set of domains”."
Das klärt zwar nicht die Ursache, aber es hilft dir erstmal zu einer Lösung. Vorausgesetzt, es funktioniert :-)
@Mathias: vielen Dank nochmal für Deine Rückmeldung!
Ich konnte leider nicht früher antworten, da mein Account gesperrt war und ich erst @franky kontaktieren musste um ihn wieder zu aktivieren...
Hier nochmal ein Resümee, was ich alles schon versucht habe...
1. Anpassung des Skripts:
Hier habe ich die einzelnen URLs direkt angegeben:
# If you don't want to let the script automaticaly determine the Exchange
# Server FQDNs, you can disable this feature and set your own values.
# You have to set $DetermineExchangeFQDNs to $false and specify your own
# DNS Names.
$DetermineExchangeFQDNs = $false
# If you have set $DetermineExchangeFQDNs to $false, you have to specify
# your own FQDNs here. The first FQDN in the list will be used as
# Common Name (CN). Leave this setting as is it, if you have set
# $DetermineExchangeFQDNs = $true:
$CustomFQDNs = @("mail.XXXXX.de","autodiscover.XXXXX.de")
3. hier die z.Z. aktiven Zertifikate:
[PS] C:\Windows\system32>Get-ExchangeCertificate | fl Thumbprint,Issuer,Subject,CertificateDomains,Services,NotBefore,NotAfter
Neue Sitzung für implizite Remotevorgänge des Befehls "Get-ExchangeCertificate" wird erstellt...
Thumbprint : 772E09B23119A38EFDDFF210B92B34DD5E4A5665
Issuer : CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
Subject : CN=autodiscover.XXXXX.de
CertificateDomains : {autodiscover.XXXXX.de, mail.XXXXX.de}
Services : IMAP, POP, IIS, SMTP
NotBefore : 15.12.2019 15:44:53
NotAfter : 14.03.2020 15:44:53
Also eigentlich geht es nur um das Zertifikat 772E09B23119A38EFDDFF210B92B34DD5E4A5665 welches ich am 15.12.2019 mit dem Skript erfolgreich erstellt habe! Das ist auch noch aktiv. Läuft allerdings am 14.03.2020 aus...
Das der Grund, warum ich nun frühzeitig ein neues erstellen wollte.
3. Skript bzw. Commando get-paorder:
Wenn ich get-paorder | Get-PAAuthorizations überprüfe, bekomme ich ein anderes Ablaufdatum!?:
fqdn status Expires DNS01Status HTTP01Status
---- ------ ------- ----------- -----------
autodiscover.XXXXX.de valid 31.03.2020 12:30:37 valid
mail.XXXXX.de valid 31.03.2020 12:30:37 valid
4. Auswertung der verschiedenen LOGs
In den diversen LOGs finde ich diese Meldung:
06.03.2020 10:43:25;Exchange;Error;Failed to import and enable Certificate;Das Argument kann nicht an den Parameter "String" gebunden werden, da es sich um eine leere Zeichenfolge handelt.
Das deutet daraufhin, dass der Skript kein Input bekommt....was widerrum hierzu passt:
2020-03-06 17:53:47.041 +01:00 [ERR] BeginCertificateOrder: error creating order. Retries remaining:-1 :: Certes.AcmeRequestException: Fail to load resource from 'https://acme-v02.api.letsencrypt.org/acme/new-order'.
urn:ietf:params:acme:error:rateLimited: Error creating new order :: too many certificates already issued for exact set of domains:
Aber warum? Wie gesagt, ich das letzte Mal am 15.12.2019 erfolgreich das Zertifikat 772E09B23119A38EFDDFF210B92B34DD5E4A5665 erstellt bekommen. und nun sollen zu viele "Orders" da liegen!?
Ich lass das ganze nun mal bis zum 13.03.2002 in Ruhe, vielleicht "beruhigt" es sich ja!?
Ich glaube nicht, dass das Skript ein Problem hat!! Es scheint wohl an LetsEncrypt zu liegen....
Danke!
Ich habe gerade etwas gelesen, das dir VIELLEICHT helfen kann.
Ändere im Script doch bitte mal zwei Zeilen ab:
$DetermineExchangeFQDNs = $false
$CustomFQDNs = @("mail.XXXXX.de","autodiscover.XXXXX.de","exchange.XXXXX.de")sprich, häng zusätzlich zu den benötigten mail. und autodiscover. noch eine dritte Subdomain mit dran, für die das Zertifikat ausgestellt werden soll.
Bereite das externe DNS entsprechend so vor, das der Eintrag ebenfalls richtig aufgelöst wird und beantrage dann nochmal ein Zertifikat.
Zitat: "If you have, or can create, an additional subdomain, you can add that to the certificate request and then it’s no longer the “exact set of domains”."
Das klärt zwar nicht die Ursache, aber es hilft dir erstmal zu einer Lösung. Vorausgesetzt, es funktioniert :-)
probier es doch bitte mal mit einem zusätzlichen Hostname. Gemäß dem, was ich gelesen habe, könnte dadurch die Meldung verschwinden, da es nicht mehr exakt die Kombination der Subdomains ist, für die zu viele Anfragen gestellt wurden.
Hi Mathias,
nochmal vielen Dank!
Ich habe das Skript entsprechend "erweitert":
$DetermineExchangeFQDNs = $false
# If you have set $DetermineExchangeFQDNs to $false, you have to specify
# your own FQDNs here. The first FQDN in the list will be used as
# Common Name (CN). Leave this setting as is it, if you have set
# $DetermineExchangeFQDNs = $true:
$CustomFQDNs = @("mail.XXXXX.de","autodiscover.XXXXX.de","exchange.XXXXX.de")
Hier das LOG beim test:
TimeStamp;ScriptSection;Type;Message;ErrorDetails
10.03.2020 16:00:23;System;Info;Geting system parameters;
10.03.2020 16:00:23;System;Info;Certificate Assistant Exchange 2019 Version;
10.03.2020 16:00:23;System;Info;PowerShell Version: 5.1.17763.1007 OSVersion: 10.0.17763.0;
10.03.2020 16:00:23;Check Posh-ACME;Info;Check if Module installed;
10.03.2020 16:00:23;Load Posh-ACME;Info;Posh-ACME is installed, try to load it;
10.03.2020 16:00:24;Load Posh-ACME;Info;Module Import was successfull, PoshACMEVersion 3.12.0;
10.03.2020 16:00:24;Load Exchange SnapIns;Info;Try to load Exchange SnapIns;
10.03.2020 16:00:25;Load Exchange SnapIns;Info;Sucessfully loaded Exchange SnapIns;
10.03.2020 16:00:25;IIS;Info;Trying to create .Well-Known Directory;
10.03.2020 16:00:25;IIS;Info;Well-Known Folder already exists, skipping;
10.03.2020 16:00:26;IIS;Info;Added Mime Type to Well-Known Folder;
10.03.2020 16:00:27;IIS;Info;Changing Let's Encrypt IIS directory to http;
10.03.2020 16:00:28;IIS;Info;Successfully changed Let's Encrypt IIS directory to http;
10.03.2020 16:00:28;IIS;Info;Checking Let's Encrypt IIS directory to accept validation by http request;
10.03.2020 16:00:28;IIS;Info;.well-known directory accepts http;
10.03.2020 16:00:28;Custom FQDNs;Info;Using Custom FQDNs is configured;
10.03.2020 16:00:28;LE System;Info;Setting LE Mode;
10.03.2020 16:00:28;LE System;Info;Setting LE Mode to PRODUCTION MODE (LIVE SYSTEM);
10.03.2020 16:00:28;LE System;Info;Checking for existing LE Account;
10.03.2020 16:00:28;LE System;Info;Found a existing LE Account;
10.03.2020 16:00:28;LE Certificate;Info;Trying to create a new order for a certificate;
10.03.2020 16:00:31;LE Certificate;Info;Successfully ordered certificate;
10.03.2020 16:00:31;LE System;Info;Creating Autorisation files for LE verification;
10.03.2020 16:00:32;LE System;Info;Asking LE to verify the order;
10.03.2020 16:00:33;LE System;Info;Successfully informed LE to verify the order;
10.03.2020 16:00:33;LE System;INFO;Let's give LE some time to validate (1 min);1 min
10.03.2020 16:01:33;LE System;INFO;Time to wake up, need coffee!;
10.03.2020 16:01:33;LE System;INFO;Let's check the authorization;
10.03.2020 16:01:34;LE System;INFO;Authorization for mail.XXXX.de is valid;
10.03.2020 16:01:34;LE System;INFO;Authorization for autodiscover.XXXX.de is valid;
10.03.2020 16:01:34;LE System;INFO;Authorization for exchange.XXXX.de is valid;
10.03.2020 16:01:34;LE System;INFO;Let's refresh the order;
10.03.2020 16:01:35;LE System;INFO;Let's check if order is ready;
10.03.2020 16:01:35;LE System;INFO;Order is ready;
10.03.2020 16:01:35;LE System;INFO;Let's get the certificate;
10.03.2020 16:01:39;LE System;INFO;Getting certificate was successfull. Thumbprint is 6CAEA422CD042D342B9B21A6A108EDC3FC41980D;
10.03.2020 16:01:39;LE System;INFO;Let's check if the PFX is present;
10.03.2020 16:01:39;Cert Export;Info;PFX 6CAEA422CD042D342B9B21A6A108EDC3FC41980D verified successfully;
10.03.2020 16:01:39;LE System;INFO;CleanUp Mime Type;
10.03.2020 16:01:39;LE System;INFO;CleanUp successfull;
10.03.2020 16:01:39;Exchange;Info;Lets try to enable certificate for Exchange Server;
10.03.2020 16:01:43;Exchange;Info;Exchange Server Version: Version 15.2 (Build 464.5);
10.03.2020 16:01:43;Exchange;Error;Failed to import and enable Certificate;Das Argument kann nicht an den Parameter "String" gebunden werden, da es sich um eine leere Zeichenfolge handelt.
10.03.2020 16:01:43;SendMail;Info;Try to send email with logfile;
10.03.2020 16:01:43;SendMail;Info;E-Mail send successfully initiated;
10.03.2020 16:01:43;End;Info;End of script;
Unterm Strich leider genau das gleiche ?
Ich finde auf dem Server auch nirgends eine Datei mit dem Fingerprint 6CAEA422CD042D342B9B21A6A108EDC3FC41980D!?
Ich verstehe aber auch nicht das LOG!?
10.03.2020 16:01:39;LE System;INFO;Getting certificate was successfull. Thumbprint is 6CAEA422CD042D342B9B21A6A108EDC3FC41980D;
10.03.2020 16:01:39;LE System;INFO;Let's check if the PFX is present;
10.03.2020 16:01:39;Cert Export;Info;PFX 6CAEA422CD042D342B9B21A6A108EDC3FC41980D verified successfully;
wie kann das jeweils erfolgreich sein, wenn dann doch nichts da ist?!?
Hier der Teil im Skript:
#Verify if PFX is present
Write-ACMELog "LE System" "INFO" "Let's check if the PFX is present"
$Certpath = (Get-PACertificate | where {$_.Thumbprint -eq $LECertThumbprint}).PfxFile
if (test-path $CertPath)
{
Write-ACMELog "Cert Export" "Info" "PFX $LECertThumbprint verified successfully"
Wo legt er das eigentlich hin? Doch im gleichen Verzeichnis oder? Dort werden nur die jeweiligen LOGs abgelegt?!?
Gruß
Per
%LocalAppData%\Posh-ACME\acme-v02.api.letsencrypt.org\
dort liegt bei mir in weiteren Unterordnern das PFX
Und wenn du jetzt "Get-ExchangeCertificate | fl Thumbprint,Issuer,Subject,CertificateDomains,Services,NotBefore,NotAfter" ausführst, siehst du dann 6CAEA422CD042D342B9B21A6A108EDC3FC41980D ?
Du glaubst es nicht!!!! Ich habe den Fehler gefunden!!!
Ich hatte im Zertifikats Passwort ein $ Zeichen!!!
Also hier: $PFXPasswort = "xxxx"
Und das mag das Skript wohl überhaupt nicht!?!?
Das PFX Zertifikat wird aber nicht als Datei abgelegt!?
Nochmals vielen DANK!!! War schon drauf und dran mir ein offizielles Zertifikat zu kaufen...
Per
Schön, das es noch rechtzeitig geklappt hat.
Ich kann mir vorstellen, dass das $ dann irgendwo weiter innerhalb des Scripts als Variable bewertet wird und es dadurch zum Fehler kommt.
Interessant ist dann jedoch die Rückmeldung von Let's Encrypt, Stichwort "rate limit".
Hallo liebe Gemeinde
Nach dem CU12 Update vom muss man ja nun leider etwas ändern, da Microsoft den Import verändert hat.
Die Zeile: Import-ExchangeCertificate -FileName $CertPath -FriendlyName $SANAlias -Password $ImportPassword -PrivateKeyExportable:$true | Enable-ExchangeCertificate -Services "SMTP, IMAP, POP, IIS" –force
Will er ja nicht mehr. Ich habe fast erfolgreich diese durch die nachfolgenden Zeilen ersetzt.
$ImportCert = Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path $CertPath -Encoding byte -ReadCount 0)) -Password (convertto-securestring -string $PFXPasswort -asplaintext -force)
Enable-ExchangeCertificate -Thumbprint $ImportCert.Thumbprint -Services POP,IMAP,SMTP,IIS -Confirm:$false
Leider fragt er weiterhin, ob man wirklich das Zertifikat wechseln möchte, was für ein automatisches Skript ziemlich doof ist. Ich sehe im Moment den Wald vor lauter Bäumen nicht und bitte mal um Tipps, wie ich die Abfrage verhindern kann.
Vielen Dank für eure Hilfe.
Gruß
MeinerEiner
@meinereiner https://docs.microsoft.com/en-us/powershell/module/exchange/enable-exchangecertificate?view=exchange-ps#parameters
-Confirm:$false hast du ja bereits in deiner Codezeile drin, versuch es doch mal zusätzlich noch mit dem Switch -Force
-ConfirmThe Confirm switch specifies whether to show or hide the confirmation prompt. How this switch affects the cmdlet depends on if the cmdlet requires confirmation before proceeding.
- Destructive cmdlets (for example, Remove-* cmdlets) have a built-in pause that forces you to acknowledge the command before proceeding. For these cmdlets, you can skip the confirmation prompt by using this exact syntax:
-Confirm:$false
.- Most other cmdlets (for example, New-* and Set-* cmdlets) don't have a built-in pause. For these cmdlets, specifying the Confirm switch without a value introduces a pause that forces you acknowledge the command before proceeding.
-ForceThe Force switch hides warning or confirmation messages. You don't need to specify a value with this switch.
You can use this switch to run tasks programmatically where prompting for administrative input is inappropriate.
By default, when you enable a certificate for SMTP, the command prompts you to replace the existing certificate that's enabled for SMTP, which is likely the default Exchange self-signed certificate.
Enable-ExchangeCertificate -Thumbprint $ImportCert.Thumbprint -Services POP,IMAP,SMTP,IIS -Confirm:$false -Force
Habe leider keinen Exchange Server mehr, an dem ich dies verifizieren könnte.
Viel Erfolg
Gruß
Mathias
Vielen Dank,
ich hatte das nach einer größeren Pause dann selbst rausgefunden.
Die zwei neuen Zeilen heißen:
$ImportCert = Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path $CertPath -Encoding byte -ReadCount 0)) -Password (convertto-securestring -string $PFXPasswort -asplaintext -force)
Enable-ExchangeCertificate -Thumbprint $ImportCert.Thumbprint -Services POP,IMAP,SMTP,IIS -force
dafür muss diese Zeile weg:
Import-ExchangeCertificate -FileName $CertPath -FriendlyName $SANAlias -Password $ImportPassword -PrivateKeyExportable:$true | Enable-ExchangeCertificate -Services "SMTP, IMAP, POP, IIS" –force
Dann funktioniert das Script wieder super.
Im Augenblick bin ich noch am Programmieren einer Erweiterung, um alte Zertifikate zu löschen. Bei uns haben die Server sich mit Zertifikaten zugemüllt, wenn man das nicht regelmäßig von Hand gemacht hat. Da wir die meisten Verwaltungsaufgaben automatisiert haben, wäre das auch noch ein Fortschritt. Sollte das schon jemand fertig haben, würde ich mich über einige Hinweise freuen.