Certificate Assistant: Neue Version

Gerade habe ich eine neue Version des Exchange Certificate Assistant hochgeladen. Die alte Version verwendet noch das Let’s Encrypt Protokoll ACMEv1, welches nicht mehr von Let’s Encrypt unterstützt wird.

Die neue Version 3 des Certificate Assistant verwendet nun das PowerShell Modul Posh-ACME, um automatisch Zertifikate für Exchange Server via Let’s Encrypt anzufordern. Posh-ACME ist ACMEv2 kompatibel und somit auch in der Lage Wildcard Zertifikate von Let’s Encrypt anzufordern. Der Certificate Assistant verwendet allerdings nach wie vor keine Wildcard Zertifikate, sondern SAN-Zertifikate, welche mittels HTTP-01 Challenge validiert werden. Der Vorteil von HTTP-01 ist, dass sich der komplette Prozess für Exchange Zertifikate automatisieren lässt und keine Anpassungen am DNS erforderlich sind. Es sind nur wenige Einstellungen im Script selbst zu definieren, der Rest läuft dann vollautomatisch.

Die aktuelle Certificate Assistant Version unterstützt die folgenden Exchange Server Versionen:

  • Exchange 2010 (PowerShell 5 erforderlich, PowerShell 5 ist nicht für SBS Server freigegeben)
  • Exchange 2013
  • Exchange 2016
  • Exchange 2019

Ich habe mal ein kleines Video aufgenommen welches den Certificate Assistant auf einem Exchange 2019 Server in Aktion zeigt:

Exchange Zertifikate Assistant kann hier runtergeladen werden:

Im ZIP Archiv findet sich jeweils ein Script je nach Exchange Version. Hier noch eine kleine Anleitung zur Benutzung.

Anleitung

Im Script finden sich ein paar grundlegende Einstellungen die zunächst konfiguriert werden müssen. Die folgenden drei Einstellungen müssen zwingend angepasst werden, die restlichen Einstellung sind optional:

image

Erforderliche Einstellungen

Mittels $LetsEncryptMode wird festgelegt, über welches Let’s Encrypt System die Zertifikate angefordert werden. “LE_Stage” ist das Testsystem, mit dem zunächst die Funktion des Scriptes getestet werden kann. Im Modus “LE_Stage” werden keine gültigen Zertifikate angefordert und es greifen keine Let’s Encrypt Limits. Der “LE_Stage”-Modus ist also ideal zum Testen, wenn erfolgreich ein Zertifikat ausgestellt wurde, kann das Script das Let’s Encrypt Poduktiv System verwenden um gültige Zertifikate anzufordern (LE_Prod).

$ContactMail ist für die Registrierung des Let’s Encrypt Kontos erforderlich. Hier muss eine gültige E-Mail Adresse angegeben werden. Das Let’s Encrypt  Konto wird, wenn nötig, automatisch vom Script erstellt.

$PFXPasswort legt das Passwort für das Zertifikat (PFX-Datei)  fest. Das Passwort ist erforderlich, wenn das Zertifikat auch auf anderen Servern installiert werden soll.

Optionale Einstellungen

$WriteConsoleLog steuert die Logausgabe, es wird immer ein Logfile im Certificate Assistant Verzeichnis geschrieben, mittels $WriteConsoleLog lässt sich nur die Ausgabe in der Konsole abschalten ($false), nicht aber das Logfile.

$DetermineExchangeFQDNs und $CustomFQDNs gehören zusammen. In der Standardeinstellung versucht das Script automatisch die erforderlichen Hostnamen für das Zertifikat zu ermitteln ($DetermineExchangeFQDNs  = $true). Wenn andere Hostnamen oder zusätzlichen DNS-Namen gewünscht oder erforderlich sind, kann $DetermineExchangeFQDNs auf den Wert $false gesetzt werden. In diesem Fall müssen dann alle DNS-Namen angegeben werden ($CustomFQDNs).

Die Einstellungen ab $SendMail sollten selbsterklärend sein. Certificate Assistant verschickt nach einem Durchlauf das Logfile per Mail.

Hinweise

Exchange Certificate Assistant ist darauf ausgelegt direkt auf einem Exchange Server ausgeführt zu werden. Der Exchange Server selbst muss aus dem Internet unter den entsprechenden Hostnamen auf Port 80 (http) und Port 443 (https) erreichbar sein. Andernfalls schlägt die Validierung fehl und es kann kein Zertifikat angefordert werden.

Eine öffentliche CA wie Let’s Encrypt kann keine Zertifikate für “nicht öffentliche” Domänen ausstellen. Es können also keine Zertifikate mit Hostnamen wie “server1.domain.local” angefordert werden. Die Exchange Virtual Directorys müssen also auf öffentliche Hostnamen konfiguriert werden. Eine entsprechende Konfiguration ist hier beschrieben:

Bei Problemen oder Fehlern mit diesem Script kann gerne das Forum genutzt werden. Bitte in diesem Fall immer das Logfile anhängen und darauf achten, dass keine sensiblen Informationen im Logfile stehen (also bitte entsprechend löschen).

86 Gedanken zu „Certificate Assistant: Neue Version“

  1. Vielen Dank!

    Der erste Testrun lief problemlos durch. Hat mich nur etwas verwundert, dass das ungültige Test Zertifikat dann doch im ECP eingetragen wurde. War zwar schnell wieder geändert, nachdem die Funktion des Zertifikates gegeben war, hat mich aber trotzdem kurz verwirrt :)

    Danke für deine Mühen!

    Antworten
  2. Hi,

    leider ein Problem bei Exchange 2010 (SBS2011).

    PS C:\Windows\system32> C:\Users\admin\Desktop\CertificateAssistant_v3_EX2010.ps1
    03.12.2019 09:30:54 – System – Info – Geting system parameters
    03.12.2019 09:30:54 – System – Info – Certificate Assistant Exchange 2010 Version
    03.12.2019 09:30:54 – System – Info – PowerShell Version: 5.1.14409.1018 OSVersion: 6.1.7601.65536
    03.12.2019 09:30:54 – Check Posh-ACME – Info – Check if Module installed
    03.12.2019 09:30:54 – Load Posh-ACME – Info – Posh-ACME is installed, try to load it
    03.12.2019 09:30:54 – Load Posh-ACME – Info – Module Import was successfull, PoshACMEVersion 3.11.0
    03.12.2019 09:30:54 – Load Exchange SnapIns – Info – Try to load Exchange SnapIns
    03.12.2019 09:30:54 – Load Exchange SnapIns – Info – Sucessfully loaded Exchange SnapIns
    03.12.2019 09:30:54 – IIS – Info – Trying to create .Well-Known Directory
    03.12.2019 09:30:55 – IIS – Info – Well-Known Folder already exists, skipping
    03.12.2019 09:30:55 – IIS – Warning – Mime Type was not added to Well-Known folder, maybe it was already added
    03.12.2019 09:30:55 – IIS – Info – Changing Let’s Encrypt IIS directory to http
    03.12.2019 09:30:55 – IIS – Info – Successfully changed Let’s Encrypt IIS directory to http
    03.12.2019 09:30:55 – IIS – Info – Checking Let’s Encrypt IIS directory to accept validation by http request
    03.12.2019 09:30:55 – IIS – Info – .well-known directory accepts http
    03.12.2019 09:30:55 – Custom FQDNs – Info – Using Custom FQDNs is configured
    03.12.2019 09:30:55 – LE System – Info – Setting LE Mode
    03.12.2019 09:30:56 – LE System – Info – Setting LE Mode to PRODUCTION MODE (LIVE SYSTEM)
    03.12.2019 09:30:56 – LE System – Info – Checking for existing LE Account
    03.12.2019 09:30:56 – LE System – Info – Found a existing LE Account
    03.12.2019 09:30:56 – LE Certificate – Info – Trying to create a new order for a certificate
    03.12.2019 09:30:56 – LE Certificate – Info – Successfully ordered certificate
    03.12.2019 09:30:56 – LE System – Info – Creating Autorisation files for LE verification
    03.12.2019 09:30:57 – LE System – ERROR – Can’t create Autorisation files for LE verification
    03.12.2019 09:30:57 – LE System – Info – Asking LE to verify the order
    03.12.2019 09:30:57 – LE System – Info – Successfully informed LE to verify the order
    03.12.2019 09:30:57 – LE System – INFO – Let’s give LE some time to validate (1 min)
    03.12.2019 09:31:17 – LE System – INFO – Time to wake up, need coffee!
    03.12.2019 09:31:17 – LE System – INFO – Let’s check the authorization
    03.12.2019 09:31:17 – LE System – INFO – Authorization for mail.MyDomainName.com is valid
    03.12.2019 09:31:17 – LE System – INFO – Let’s refresh the order
    03.12.2019 09:31:17 – LE System – INFO – Let’s check if order is ready
    03.12.2019 09:31:17 – LE System – ERROR – Order is NOT ready

    End of script. Was passiert hier falsch? Hab 60 Sek Validierung auf 20 Sek eingestellt, aber mit 60 Sek bringts auch keinen Mehr-Effekt, also selber Fehler.

    Bitte um deine geschätzte Unterstützung Frank!
    lg aus Wien

    Antworten
  3. Habs auch getestet, danke für das Script aber:

    Auf Exchange 2019 der gleiche Fehler wie oben:
    LE System – ERROR – Order is NOT ready

    Antworten
    • Hallo,
      lasst uns doch solche Probleme im Forum diskutieren. :-)
      Sind die Server per Port 80 und 443 aus dem Internet erreichbar? Könnt ihr im Forum das komplette Log posten?
      Besten Dank und Gruß,

      Frank

      Antworten
  4. Einmal mehr besten Dank für eine Arbeit Frank. Damit wird das Leben als Admin wieder etwas leichter!
    Heute ergab sich die Gelegenheit, die neue Version zu testen und dabei gab es 2 „Fehler“.

    1) bei der 1. Ausführung, gab es eine Meldung, dass .NET 4.7.1 installiert sein muss, sonst gibt es möglich Fehler (installiert war 4.6.2). Das Script gab tatsächlich eine Fehlermeldung:

    03.12.2019 18:52:53;LE System;INFO;Order is ready;
    03.12.2019 18:52:53;LE System;INFO;Let’s get the certificate;
    03.12.2019 18:52:54;LE System;ERROR;Getting certificate was not successfull;Der Typ [Org.BouncyCastle.Security.SecureRandom] kann nicht gefunden werden. Stellen Sie sicher, dass die Assembly, die diesen Typ enthält, geladen wird.

    Eigentlich ein klarer Fall, sobald die Version .NET 4.7.1 installiert war (+ Neustart) konnte das Zertifikat erfolgreich mit dem Script installiert werden.

    2) um zu testen, verbinde ich immer über WAN mit der externe URL, um mir danach das Zertifikat kurz anzusehen. Diesmal auch mit Waterfox die URL https://server.kunde.ch/owa geöffnet aber das wurde als unsicher gemeldet. Die Seite konnte nicht angezeigt werden. Dasselbe mit Google Chrome (beide neuste Version). IE11 & Edge hatten dieses Problem nicht und es war nur bei dieser Server. Die exakte Fehlermeldung ist leider nicht auffindbar, meldete jedoch die Verwendung von unsichere Protokolle. Daraufhin habe ich „IIS Crypto“ gestartet und die aktive Protokolle gemäss Best Practice angepasst. Ein Neustart später hat die Verbindung wieder korrekt funktioniert, mit allen Browsern.
    Warum das diesmal passierte ist noch unklar. Eventuell hat sich bei Lets Encrypt etwas verändert, das muss ich noch abklären. IIS Crypto werde ich den nächsten Monaten sowieso noch viel einsetzen, Server Hardening ist angesagt bei alle Kunden-Server.

    Grüsse
    Eric

    Antworten
    • Hallo Eric,

      ich bekomme den selben Fehler mit „Org.BouncyCastle.Security.SecureRandom“

      Sowohl unter Exchange 2010 (Server2008R2) und Exchange 2013 (Server 2012R2).
      Beide haben .NET 4.7.2 installiert.
      Noch etwas anderes geändert außer .NET?

      Antworten
      • Hallo Benjamin

        Nein, bei mir genügte es .NET 4.7.1 zu installieren (von 4.6.2) und danach konnte das Script alle Aufgaben fehlerfrei ausführen. Hast du die Server neu gestartet und ist die Version 4.7.2 tatsächlich drauf?
        Hier gibt es noch 2-3 Sätze mehr zum Thema (English): https://github.com/rmbolger/Posh-ACME/issues/56#issuecomment-401885623

        Umgebung: Windows Server 2016 1607 Build 14393.2972, Exchange 2016 CU8 (ja, ich weiss, es gibt schon CU14 aber eine Freigabe des Kunden lässt auf sich warten).

        Gruss
        Eric

        Antworten
        • Hallo Eric,

          Danke für deine Antwort

          Den Githup Post hatte ich auch schon gefunden ;-)
          Laut Build Number 461814 ist es .Net 4.7.2
          Server wurde auch neu gestartet.

          Gruß
          Benjamin

  5. Hallo Frank,

    vorerst danke für das Skript. Schon das letzte hilft sehr!
    Du schreibst, wir sollen das im Forum besprechen.

    Könntest du den Forenlink hier posten, in dem das besprochen wird?
    Im Forum gibts Exchange 2010/2013/2016/2019 Kategorien, in denen das alles reinpasst.

    Aber vermutlich ist der obige Fehler nur einmal zu behebung bei allen Systemen funktionierts dann gleich.

    Port 80+443 sind aus dem Internet erreichbar. Es wird nur ein Domainname zertifiziert und der ist bei mxtoolbox auch vorhanden mit korrekter IP-Adresse und offenen Ports.
    Habe die betreffende Zeile auch auf die notwendige Domain umgeändert, aber derselbe Fehler.

    Bitte um Link zum Thread dazu.

    Antworten
  6. Eine kurze Frage, ich möchte das Skript auf einem Exchange 2013 SP1 ausführen.
    Kann ich hier Powershell 5 installieren oder ist das erst auf einem aktuelleren Patchstand möglich?

    Antworten
  7. Hi Frank,

    erstmal danke für deine Arbeit und das Skript :-), echt eine coole Sache!
    Noch eine Frage, im Task Scheduler wird das Skript jetzt einfach ohne Switch (-renew:$true) aufgerufen oder?

    Danke!
    SG
    Sebastian

    Antworten
  8. Hallo Frank,

    auf dem ersten System Exch2019 eingerichtet, läuft, gibt es eine Möglichkeit die verbleibenden Tage vor dem renew zu beeinflussen? Hintergrund ist noch genügend Zeit zu haben, wenn das mal schief geht, aktuell Monitore ich die verbleibenden Tage und werde aktiv benachrichtigt, wenn in meinem Fall dir Restzeit unter 10 Tage fällt, um so eine gute Woche als Reserve zu haben, hatte ich den Renew immer bei 12 Tagen, wie läuft das jetzt, wann wird erneuert, beeinflussbar ?

    Antworten
  9. Hallo und danke für das Skript,

    ich bekomme leider nur ein ungültiges Zertifikat ausgestellt:
    Von einer Zertifizierungsstelle signiertes Zertifikat
    Aussteller: CN=Fake LE Intermediate X1
    Exchange 2016 CU14 auf Server 2016

    Antworten
    • Genau, das selbe bei mir. Wollte heute die Prod Mode verwenden, gibt mir aber nur ein FAKE Zertifikat aus. Wollte dann das Zertifikat mit dem alten v2 Assisstent nochmal generieren, jetzt spuckt er mir aber 03.01.2020 21:48:18 – Certificate – Error – Failed to submit the certificate for signing aus. Keine Ahnung wo das Problem jetzt liegt. Momentan geht keines der beiden Skripte.

      Antworten
      • Nochmal ein Update: Beim zweiten mal ging es plötzlich. Irgendwie konnte er beim ersten Versuch den Stagemode nicht richtig setzen.

        03.01.2020 21:41:22 – LE System – Info – Setting LE Mode
        03.01.2020 21:41:23 – LE System – ERROR – Can’t set LE Mode: Der Remotename konnte nicht aufgelöst werden: ‚acme-v02.api
        .letsencrypt.org‘
        03.01.2020 21:41:23 – LE System – Info – Checking for existing LE Account
        03.01.2020 21:41:23 – LE System – Warning – No LE Account was found, creating a new one

        Existing account with matching contacts and key length.
        Do you wish to duplicate?
        [J] Ja [N] Nein [H] Anhalten [?] Hilfe (Standard ist „J“): j

        Beim zweiten Versuch lief es dann durch:

        03.01.2020 21:54:40 – LE System – Info – Setting LE Mode
        Please review the Terms of Service here: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
        03.01.2020 21:54:41 – LE System – Info – Setting LE Mode to PRODUCTION MODE (LIVE SYSTEM)

        Wo wird das Zertifikat denn gespeichert? Im Ordner, wo das Skript liegt(wie bei Version 2) erscheint es nicht.

        Antworten
        • Hallo Carsten
          das Zertifikat liegt unter C:\Users\\AppData\Local\Posh-ACME\acme-v02.api.letsencrypt.org\\

  10. Hallo Frank,
    ich bitte um Hilfe:
    SBS2011 / EXC2010 mit aktuellem Script.
    1.) 13.12.2019 20:49:55 – LE System – ERROR – Can’t create Autorisation files for LE verification
    2.) 13.12.2019 20:50:58 – LE System – ERROR – Order is NOT ready

    Vielleicht gibt es einen Zusammenhang zwischen beiden Fehlermeldungen?

    Antworten
  11. Hallo,

    habe das Skript bei meinem Exchang 2016 ausprobiert, leider kommt am Ende dann folgende Fehlermeldung…
    ——————————————————
    12.01.2020 22:43:56 – LE Certificate – ERROR – Can’t order certificate: Error creating new order :: Cannot issue for „ur
    l“: Domain name needs at least one dot
    12.01.2020 22:43:56 – LE System – Info – Creating Autorisation files for LE verification
    Get-PAAuthorizations : Das Argument kann nicht an den Parameter „AuthURLs“ gebunden werden, da es NULL ist.
    In E:\certificate\CertificateAssistant_v3_EX2013.ps1:503 Zeichen:21
    + $auths = $LEOrder | Get-PAAuthorizations
    + ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData: (:) [Get-PAAuthorizations], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Get-PAAuthorizations

    12.01.2020 22:43:56 – LE System – Info – Asking LE to verify the order
    Send-ChallengeAck : Das Argument kann nicht an den Parameter „ChallengeUrl“ gebunden werden, da es sich um eine leere
    Zeichenfolge handelt.
    In E:\certificate\CertificateAssistant_v3_EX2013.ps1:519 Zeichen:21
    + $auths.HTTP01Url | Send-ChallengeAck
    + ~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData: (:) [Send-ChallengeAck], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Send-ChallengeAck

    ——————————————————
    Was habe ich falsch gemacht? Vielen Dank.

    Antworten
  12. Hallo,
    das Script läuft durch und bringt am Ende folgenden Fehler:
    „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.“

    Ist das normal im LE_Stage mode?

    Antworten
    • Viel kann ich zu der Antwort auf diese Frage zwar leider nicht beitragen, aber im LE_Stage Mode kommt diese Meldung nicht per se.
      Im Gegenteil, das FAKE Zertifikat wird sogar eingebunden und dem Zertifikat Dienste zugewiesen.

      Das wäre etwas, was es vielleicht noch abzuändern gilt. Denn für einen Moment lang ist dann ein nicht vertrauenswürdiges Zertifikat am IIS angebunden. Für den Probelauf sollte diese Funktion vielleicht ausgeklammert werden.

      Gruß
      Mathias

      Antworten
    • Auch ich habe das Problem vom Postersteller. Im LE_Stage, als auch im LE_Prod mode wird die Fehlermeldung „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.“ erzeugt.

      Antworten
  13. Hallo Frank,
    erstmal vielen Dank für das Script. Ich habe allerdings folgendes Problem: in meiner Exchange 2016 Umgebung läuft das Script komplett durch, aber am Schluss kommt immer: ERROR – Order ist NOT ready. Sonst nichts, keine weitere Fehlermeldung weiter oben, alles sieht OK aus.
    Viele Grüße,
    Michael

    Antworten
  14. Ich bekomme im stage Mode folgenden Fehler:
    27.01.2020 01:14:34 – Exchange – Info – Exchange Server Version: Version 14.3 (Build 123.4)
    WARNING: Dieses Zertifikat wird nicht für externe TLS-Verbindungen mit einem FQDN von ‚mail.xxxxx.de‘ verwendet, weil
    das von einer CA signierte Zertifikat mit dem Fingerabdruck ‚DE6116D44CC3B70B363846734C5E7FBBBBBBBBB‘ den Vorrang übernimmt. Die folgenden Connectors stimmen mit dem betreffenden FQDN überein: Client EXSRV, Internet, SMTP Direkt via DNS.
    27.01.2020 01:15:02 – Exchange – Info – Successfully imported and enabled Certificate

    Antworten
  15. Hallo, ich habe es gerade mit Server 2019 Core + Exchange 2019 getestet und der Script läuft normal, ich sehe keine Fehler, nur eins: LE System;Info;Setting LE Mode;
    01.02.2020 15:51:06;LE System;Info;Setting LE Mode to STAGE MODE (TESTING ONLY);
    01.02.2020 15:51:06;LE System;Info;Checking for existing LE Account;
    01.02.2020 15:51:06;LE System;Warning;No LE Account was found, creating a new one;
    egal wie oft ich den Script starte immer das gleiche. Es wir eingebunden und ich erhalte ein ungültiges Zertifikat.
    Wer weitere Infos brach ich habe den kompletten Log. Das einzige am Script angepasste ist, das ich die FQDN Namen vorgebe.

    Antworten
  16. Hallo!

    Bei mir läuft es, daher eine kleine Anleitung:
    Windows2016 1607, Build 1493.3474
    Exchange 2016 CU13

    1.) Port 80 auf Fierwall öffnen und per NAT zuweisen
    2.) Checkt die Pfade und die Host Namen.
    Da hatte ich persönlich einen Konfigfehler.

    https://www.frankysweb.de/exchange-2016-die-basiskonfiguration/

    Siehe:

    ——————————————————————————–
    $servername = „FWEX2“
    $internalhostname = „outlook.frankysweb.de“
    $externalhostname = „outlook.frankysweb.de“
    $autodiscoverhostname = „autodiscover.frankysweb.de“

    $owainturl = „https://“ + „$internalhostname“ + „/owa“
    $owaexturl = „https://“ + „$externalhostname“ + „/owa“
    $ecpinturl = „https://“ + „$internalhostname“ + „/ecp“
    $ecpexturl = „https://“ + „$externalhostname“ + „/ecp“
    $ewsinturl = „https://“ + „$internalhostname“ + „/EWS/Exchange.asmx“
    $ewsexturl = „https://“ + „$externalhostname“ + „/EWS/Exchange.asmx“
    $easinturl = „https://“ + „$internalhostname“ + „/Microsoft-Server-ActiveSync“
    $easexturl = „https://“ + „$externalhostname“ + „/Microsoft-Server-ActiveSync“
    $oabinturl = „https://“ + „$internalhostname“ + „/OAB“
    $oabexturl = „https://“ + „$externalhostname“ + „/OAB“
    $mapiinturl = „https://“ + „$internalhostname“ + „/mapi“
    $mapiexturl = „https://“ + „$externalhostname“ + „/mapi“
    $aduri = „https://“ + „$autodiscoverhostname“ + „/Autodiscover/Autodiscover.xml“

    Get-OwaVirtualDirectory -Server $servername | Set-OwaVirtualDirectory -internalurl $owainturl -externalurl $owaexturl
    Get-EcpVirtualDirectory -server $servername | Set-EcpVirtualDirectory -internalurl $ecpinturl -externalurl $ecpexturl
    Get-WebServicesVirtualDirectory -server $servername | Set-WebServicesVirtualDirectory -internalurl $ewsinturl -externalurl $ewsexturl
    Get-ActiveSyncVirtualDirectory -Server $servername | Set-ActiveSyncVirtualDirectory -internalurl $easinturl -externalurl $easexturl
    Get-OabVirtualDirectory -Server $servername | Set-OabVirtualDirectory -internalurl $oabinturl -externalurl $oabexturl
    Get-MapiVirtualDirectory -Server $servername | Set-MapiVirtualDirectory -externalurl $mapiexturl -internalurl $mapiinturl
    Get-OutlookAnywhere -Server $servername | Set-OutlookAnywhere -externalhostname $externalhostname -internalhostname $internalhostname -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod ‚Negotiate‘
    Get-ClientAccessService $servername | Set-ClientAccessService -AutoDiscoverServiceInternalUri $aduri

    Get-OwaVirtualDirectory -Server $servername | fl server,externalurl,internalurl
    Get-EcpVirtualDirectory -server $servername | fl server,externalurl,internalurl
    Get-WebServicesVirtualDirectory -server $servername | fl server,externalurl,internalurl
    Get-ActiveSyncVirtualDirectory -Server $servername | fl server,externalurl,internalurl
    Get-OabVirtualDirectory -Server $servername | fl server,externalurl,internalurl
    Get-MapiVirtualDirectory -Server $servername | fl server,externalurl,internalurl
    Get-OutlookAnywhere -Server $servername | fl servername,ExternalHostname,InternalHostname
    Get-ClientAccessServer $servername | fl name,AutoDiscoverServiceInternalUri
    ——————————————————————————–

    3.) Powershell ISE als Admin öffnen
    4.) Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn um Exhchange Befehle in Powershell zu laden (wenn man es nicht schon geladen hat)
    5.) get-ExecutionPolicy checken
    4.) Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass ( Um die Scripte zu erlauben)
    6.) Install-Module -Name Posh-ACME 3.12.0 von https://www.powershellgallery.com/packages/Posh-ACME/3.12.0
    7.) Wie schon erwähnt reicht Network Framework 4.7.1 (zumindest bei Exchange 2016)
    8.)Script CertificateAssistant_v3_EX2016 editieren und als Test durchlaufen lassen.

    Vielleicht hilft es jemand.

    Gruße
    Peter

    Antworten
  17. Hallo,
    wo kann man die „alte“ Version2 runterladen? Ich habe die Kombi aus Server2012R2 und Exchange2016. Ich laufe auch in den Fehler: „ERROR – Order is NOT ready“

    Danke.
    P.S. Super Arbeit !

    Antworten
  18. Server 2019 – Exchange 2019 – bekomme auch „ERROR – Order is NOT ready“
    Habe auch versucht (habe alles auf einem Namen – autodiscover läuft via SRV record) auf false zu setzen und bei CustomFQDNs meine Serveradresse eingetragen.
    So geht das script zwar schneller – aber der Fehler bleibt.

    Antworten
  19. Hat sich erledigt. Auf meiner Firewall war 80 nicht offen.
    Lösung – deinen code wie folgt geändert:

    Write-ACMELog „LE System“ „ERROR“ „Order is NOT ready“
    $LEOrder | Get-PAOrder | fL
    exit

    Dann sieht man die Orderdetails – samt der Status-URLs.
    Aufgerufen und folgendes gefunden.
    „challenges“: [
    {
    „type“: „http-01“,
    „status“: „invalid“,
    „error“: {
    „type“: „urn:ietf:params:acme:error:connection“,
    „detail“: „Fetching http://my.server.here/.well-known/acme-challenge/keykeykey: Timeout during connect (likely firewall problem)“,
    „status“: 400
    Der Rest war einfach.
    Danke für deine Arbeit – super Script.

    Antworten
  20. Ich habe die Kombi aus Server2012R2 und Exchange2016. ich musste „Install-Module -Name Posh-ACME -confirm:$false“ ausführen bevor das Script durchlief.

    Danke für das Script.

    Antworten
  21. Hallo und danke für das Script,

    ich habe auf einem 2008 R2 mit 5.1 Powershell nach manueller Installation von Posh folgende Fehlermeldung:

    25.02.2020 14:23:33 – Exchange FQDNs – Info – Make them unique
    25.02.2020 14:23:33 – Exchange FQDNs – Info – FQDNs are unique
    25.02.2020 14:23:33 – LE System – Info – Setting LE Mode
    Please review the Terms of Service here: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
    25.02.2020 14:23:34 – LE System – Info – Setting LE Mode to PRODUCTION MODE (LIVE SYSTEM)
    25.02.2020 14:23:34 – LE System – Info – Checking for existing LE Account
    25.02.2020 14:23:34 – LE System – Warning – No LE Account was found, creating a new one
    25.02.2020 14:23:34 – LE System – ERROR – No LE Account was found, Error Creating a new one: Unable to find type [Securi
    ty.Cryptography.ECCurve+NamedCurves].
    25.02.2020 14:23:34 – LE Certificate – Info – Trying to create a new order for a certificate
    25.02.2020 14:23:35 – LE Certificate – ERROR – Can’t order certificate: No ACME account configured. Run Set-PAAccount or
    New-PAAccount first.
    25.02.2020 14:23:35 – LE System – Info – Creating Autorisation files for LE verification
    25.02.2020 14:23:35 – LE System – ERROR – Can’t create Autorisation files for LE verification
    25.02.2020 14:23:35 – LE System – Info – Asking LE to verify the order
    25.02.2020 14:23:35 – LE System – ERROR – Can’t send ChallengeAck
    25.02.2020 14:23:35 – LE System – INFO – Let’s give LE some time to validate (1 min)
    25.02.2020 14:24:35 – LE System – INFO – Time to wake up, need coffee!
    25.02.2020 14:24:35 – LE System – INFO – Let’s check the authorization
    25.02.2020 14:24:35 – LE System – ERROR – Can’t get authorization info
    25.02.2020 14:24:35 – LE System – ERROR – Authorization failed

    Was könnte die Ursache sein?

    Antworten
    • Auf den Fehler bin ich auch gestoßen, habe dazu einen Thread im Forum eröffnet.
      Auf deinem System fehlt höchstwahrscheinlich .NET Framework 4.7.1 oder höher.

      Gruß
      Mathias

      Antworten
    • Diese Meldung habe ich auch erhalten, nur war .NET 4.8 bereits installiert. Da ich das Zertifikat nur kurz benötige (Migration Ex2010 – Ex2016 – Ex2019), habe ich ungenügend aufgepasst mit dem Script und hatte folgende Zeile nicht angepasst:

      $ContactMail = „yourcontact@yourdomain.tld“

      Sobald hier eine korrekte Adresse resp. Domäne drin steht, war der Fehler auch weg.

      Antworten
  22. hatte auch „ERROR – Order is NOT ready“ bei der Zwangserneuerung des Zertifikates am 4.3.2020. Bei mir lag es an der DNS Auflösung, die Adresse:

    acme-staging-v02.api.letsencrypt.org wurde nicht korrekt aufgelöst, manuellen Eintrag erstellt per hosts Datei und es lief durch.

    Antworten
  23. Im Script für EX2016 beim #Check Authorization Status, habe ich $authstatus -match „valid“ auf $authstatus -eq „valid“ austauschen müssen. Mit match ist auch bei invalid true und wird somit falsch angezeigt.

    LG

    Vajk

    Antworten
  24. Hello,
    Thank you for your script.
    I managed to execute the script the first time, the certificate was installed correctly, but now that I want to renew the certificate I got this error

    23.03.2020 21:08:27 – LE Certificate – Info – Successfully ordered certificate
    23.03.2020 21:08:27 – LE System – Info – Creating Autorisation files for LE verification
    23.03.2020 21:08:27 – LE System – Info – Asking LE to verify the order
    23.03.2020 21:08:28 – LE System – Info – Successfully informed LE to verify the order
    23.03.2020 21:08:28 – LE System – INFO – Let’s give LE some time to validate (1 min)
    23.03.2020 21:09:28 – LE System – INFO – Time to wake up, need coffee!
    23.03.2020 21:09:28 – LE System – INFO – Let’s check the authorization
    23.03.2020 21:09:28 – LE System – INFO – Authorization for autodiscover.xxx is valid
    23.03.2020 21:09:28 – LE System – INFO – Authorization for mail.xxx is valid
    23.03.2020 21:09:28 – LE System – INFO – Let’s refresh the order
    23.03.2020 21:09:28 – LE System – INFO – Let’s check if order is ready
    23.03.2020 21:09:28 – LE System – INFO – Order is ready
    23.03.2020 21:09:28 – LE System – INFO – Let’s get the certificate
    23.03.2020 21:09:29 – LE System – ERROR – Getting certificate was not successfull

    Did not made any changes to the server since the first run…

    What could be wrong?

    Thank you.

    Antworten
  25. Hallo,

    danke noch mal für das Skript.
    Ich habe bei folgender Konfiguration: Exchange 2013 auf Server 2008 R2 mit manuell installiertem Posh-ACME
    Folgendes Problem:

    24.03.2020 13:56:59 – System – Info – Geting system parameters
    24.03.2020 13:56:59 – System – Info – Certificate Assistant Exchange 2013 Version
    24.03.2020 13:56:59 – System – Info – PowerShell Version: 5.1.14409.1018 OSVersion: 6.1.7601.65536
    24.03.2020 13:56:59 – Check Posh-ACME – Info – Check if Module installed
    24.03.2020 13:56:59 – Load Posh-ACME – Info – Posh-ACME is installed, try to load it
    24.03.2020 13:56:59 – Load Posh-ACME – Info – Module Import was successfull, PoshACMEVersion 3.12.0
    24.03.2020 13:56:59 – Load Exchange SnapIns – Info – Try to load Exchange SnapIns
    24.03.2020 13:56:59 – Load Exchange SnapIns – Info – Sucessfully loaded Exchange SnapIns
    24.03.2020 13:56:59 – IIS – Info – Trying to create .Well-Known Directory
    24.03.2020 13:57:00 – IIS – Info – Well-Known Folder already exists, skipping
    24.03.2020 13:57:00 – IIS – Warning – Mime Type was not added to Well-Known folder, maybe it was already added
    24.03.2020 13:57:00 – IIS – Info – Changing Let’s Encrypt IIS directory to http
    24.03.2020 13:57:00 – IIS – Info – Successfully changed Let’s Encrypt IIS directory to http
    24.03.2020 13:57:00 – IIS – Info – Checking Let’s Encrypt IIS directory to accept validation by http request
    24.03.2020 13:57:01 – IIS – Info – .well-known directory accepts http
    24.03.2020 13:57:01 – Custom FQDNs – Info – Using Custom FQDNs is configured
    24.03.2020 13:57:01 – LE System – Info – Setting LE Mode
    24.03.2020 13:57:01 – LE System – Info – Setting LE Mode to PRODUCTION MODE (LIVE SYSTEM)
    24.03.2020 13:57:01 – LE System – Info – Checking for existing LE Account
    24.03.2020 13:57:01 – LE System – Info – Found a existing LE Account
    24.03.2020 13:57:01 – LE Certificate – Info – Trying to create a new order for a certificate
    24.03.2020 13:57:01 – LE Certificate – Info – Successfully ordered certificate
    24.03.2020 13:57:01 – LE System – Info – Creating Autorisation files for LE verification
    24.03.2020 13:57:02 – LE System – ERROR – Can’t create Autorisation files for LE verification
    24.03.2020 13:57:02 – LE System – Info – Asking LE to verify the order
    24.03.2020 13:57:03 – LE System – Info – Successfully informed LE to verify the order
    24.03.2020 13:57:03 – LE System – INFO – Let’s give LE some time to validate (1 min)
    24.03.2020 13:58:03 – LE System – INFO – Time to wake up, need coffee!
    24.03.2020 13:58:03 – LE System – INFO – Let’s check the authorization
    24.03.2020 13:58:03 – LE System – INFO – Authorization for webmail.dashoefer.de is valid
    24.03.2020 13:58:03 – LE System – INFO – Authorization for autodiscover.dashoefer.de is valid
    24.03.2020 13:58:03 – LE System – INFO – Let’s refresh the order
    24.03.2020 13:58:03 – LE System – INFO – Let’s check if order is ready
    24.03.2020 13:58:03 – LE System – ERROR – Order is NOT ready

    fqdn status Expires DNS01Status HTTP01Status
    —- —— ——- ———– ————
    SERVERADRESSE invalid 31.03.2020 13:53:12 invalid
    AUTODISCOVERADRESSE invalid 31.03.2020 13:53:12 invalid

    Ich konnte sowohl auf Deiner Seite (nur ein Post mit privater Nachricht am Ende) als auch im Netz etwas zu dem Problem finden – gibt es dazu vielleicht eine Idee?

    Antworten
  26. Hallo
    danke generell für den Script…..
    eine kleine Frage….. Ist es evtl. möglich, den Script dahingehend zu erweitern, dass es das Datum eines schon vorhandenen Zertifikates abfragt und man dann als Parameter z.B. 60 Tage angeben kann?
    Ich weiss, das ist ein „Luxusproblem“ und lässt sich auch im Taskplaner lösen mit „alle 2 Monate“…..im „alten Script“ konnte man das anpassen :-)
    Ist evtl. eine Anregung für ein weiteres Release…..
    Danke

    Antworten
  27. Das würde ich auch toll finden, so könnte man per Monitoring(habe ich auf allen Certifikaten) gewarnt werden, wenn die Gültigkeit unter das Renew Fenster fehlt, also etwas nich funktioniert.

    Antworten
  28. Ich habe leider genau das gleiche Problem wie dio33, hatte das Script im Januar Super zum laufen bekommen, nun wollte ich es erneuer und bekomme genau die gleiche Meldung (habe ich auch im Forum mit meiner Originalmeldung eingetragen) es wurde bis auf normale Serverupdates nichts am Systemgeändert auch des Net und die CU sind noch die gleiche (zwar eine alte CU und das Net. 4.6 noch) aber es ist gelaufen.

    23.03.2020 21:09:28 – LE System – INFO – Let’s check if order is ready
    23.03.2020 21:09:28 – LE System – INFO – Order is ready
    23.03.2020 21:09:28 – LE System – INFO – Let’s get the certificate
    23.03.2020 21:09:29 – LE System – ERROR – Getting certificate was not successfull

    Hat hier jemand einen Tipp, auch gerne im Forum hier bei Frankys

    Antworten
      • Hello dio33,

        sorry no solution at the moment, the solution for me was to install a other Certifikate manual at the moment. But i will test it from time to time. Or if i get a Tipp here in the forum i will test it.

        Antworten
        • Hello LkOpD,
          I managed to install a new certificate with the windows utility Certify the web.
          It’s a great easy to use Windows app that works seamless.

          This script from frankyweb it was a good option, but it have to many questions to be usefull right now.

          Thanks anyway for the work.

  29. Hallo Zusammen,

    heute habe ich bei einem Kunden das folgende Problem. Beim Aktivieren des neuen Scripts trat bei der Installation von Posh-ACME die folgenden Fehler auf.

    06.04.2020 09:20:35 – System – Info – Geting system parameters
    06.04.2020 09:20:35 – System – Info – Certificate Assistant Exchange 2016 Version
    06.04.2020 09:20:35 – System – Info – PowerShell Version: 5.1.14393.3471 OSVersion: 10.0.14393.0
    06.04.2020 09:20:35 – Check Posh-ACME – Info – Check if Module installed
    06.04.2020 09:20:35 – Check Posh-ACME – Warning – Posh-ACME not installed, try to install it
    06.04.2020 09:20:35 – Check Posh-ACME – Info – Using Windows Server 2016 installation method
    WARNUNG: Es kann kein Download von URI „https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409“ nach „“
    durchgeführt werden.
    WARNUNG: Die Liste der verfügbaren Anbieter kann nicht heruntergeladen werden. Überprüfen Sie Ihre Internetverbindung.
    Install-PackageProvider : Für die angegebenen Suchkriterien für Anbieter „NuGet“ wurde keine Übereinstimmung gefunden.
    Der Paketanbieter erfordert das PackageManagement- und Provider-Tag. Überprüfen Sie, ob das angegebene Paket über die
    Tags verfügt.
    In D:\install\Letsencrypt\CertificateAssistant_v3_EX2016.ps1:129 Zeichen:11
    + … $nuget = Install-PackageProvider -Name NuGet -Force -confirm:$fals …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (Microsoft.Power…PackageProvider:InstallPackageProvider) [Install-Pac
    kageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackagePro
    vider

    WARNUNG: Source Location ‚https://www.powershellgallery.com/api/v2/package/Posh-ACME/3.12.0‘ is not valid.
    PackageManagement\Install-Package : Package ‚Posh-ACME‘ failed to download.
    In C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1772 Zeichen:21
    + … $null = PackageManagement\Install-Package @PSBoundParameters
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ResourceUnavailable: (C:\Users\sysadm…Posh-ACME.nupkg:String) [Install-Package], Excep
    tion
    + FullyQualifiedErrorId : PackageFailedInstallOrDownload,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPac
    kage

    06.04.2020 09:20:43 – Check Posh-ACME – Info – Installation successfull
    06.04.2020 09:20:43 – Load Posh-ACME – Info – Posh-ACME is installed, try to load it
    Import-Module : Das angegebene Modul „D:\install\Letsencrypt\Posh-ACME-master\Posh-ACME\Posh-ACME.psm1“ wurde nicht
    geladen, da in keinem Modulverzeichnis eine gültige Moduldatei gefunden wurde.
    In D:\install\Letsencrypt\CertificateAssistant_v3_EX2016.ps1:173 Zeichen:4
    + Import-Module $PSScriptRoot\Posh-ACME-master\Posh-ACME\Posh-ACM …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ResourceUnavailable: (D:\install\Lets…\Posh-ACME.psm1:String) [Import-Module], FileNot
    FoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

    Was kann ich hier machen?

    Antworten
      • klappt bei mir leider auch nicht:

        install-module -name posh-acme

        Der NuGet-Anbieter ist erforderlich, um den Vorgang fortzusetzen.
        PowerShellGet erfordert die NuGet-Anbieterversion 2.8.5.201 oder höher für die Interaktion mit NuGet-basierten
        Repositorys. Der NuGet-Anbieter muss in „C:\Program Files\PackageManagement\ProviderAssemblies“ oder
        „C:\Users\administrator.DACHSTEIN\AppData\Local\PackageManagement\ProviderAssemblies“ verfügbar sein. Sie können den
        NuGet-Anbieter auch durch Ausführen von ‚Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force‘
        installieren. Möchten Sie den NuGet-Anbieter jetzt durch PowerShellGet installieren und importieren lassen?
        [J] Ja [N] Nein [H] Anhalten [?] Hilfe (Standard ist „J“): J
        WARNUNG: Es kann kein Download von URI „https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409“ nach „“
        durchgeführt werden.
        WARNUNG: Die Liste der verfügbaren Anbieter kann nicht heruntergeladen werden. Überprüfen Sie Ihre Internetverbindung.
        PackageManagement\Install-PackageProvider : Für die angegebenen Suchkriterien für Anbieter „NuGet“ wurde keine
        Übereinstimmung gefunden. Der Paketanbieter erfordert das PackageManagement- und Provider-Tag. Überprüfen Sie, ob das
        angegebene Paket über die Tags verfügt.
        In C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7405 Zeichen:21
        + … $null = PackageManagement\Install-PackageProvider -Name $script:N …
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : InvalidArgument: (Microsoft.Power…PackageProvider:InstallPackageProvider) [Install-Pac
        kageProvider], Exception
        + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackagePro
        vider

        PackageManagement\Import-PackageProvider : Für die angegebenen Suchkriterien und den Anbieternamen „NuGet“ wurde keine
        Übereinstimmung gefunden. Führen Sie „Get-PackageProvider -ListAvailable“ aus, um festzustellen, ob der Anbieter im
        System vorhanden ist.
        In C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7411 Zeichen:21
        + … $null = PackageManagement\Import-PackageProvider -Name $script:Nu …
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
        + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProv
        ider

        WARNUNG: Es kann kein Download von URI „https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409“ nach „“ durchgeführt werden.
        WARNUNG: Die Liste der verfügbaren Anbieter kann nicht heruntergeladen werden. Überprüfen Sie Ihre Internetverbindung.
        PackageManagement\Get-PackageProvider : Der Paketanbieter „NuGet“ wurde nicht gefunden, da er möglicherweise noch nicht importiert wurde. Versuchen Sie es mit „Get-PackageProvider -ListAvailable“.
        In C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 Zeichen:30
        + … tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet …
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : ObjectNotFound: (Microsoft.Power…PackageProvider:GetPackageProvider) [Get-PackageProvider], Exception
        + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageProvider

        install-module : Der NuGet-Anbieter ist für die Interaktion mit NuGet-basierten Repositorys erforderlich. Stellen Sie sicher, dass 2.8.5.201 oder eine neuere Version des NuGet-Anbieters installiert ist.
        In Zeile:1 Zeichen:1
        + install-module -name posh-acme
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : InvalidOperation: (:) [Install-Module], InvalidOperationException
        + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module

        Antworten
  30. Hallo Zusammen,
    die manuelle Installation mit „Instalk-module -name posh-acme führt zu den gleichen Fehlern.
    Das hatte ich vor meinem Post hier auch schon getestet.

    Antworten
  31. Hallo Zusammen,
    ich habe für mein Problem eine Lösung gefunden. In einem anderem Forum bin ich auf eine Lösung gestoßen, die mit geholfen hat das Modul manuell zu installieren.

    Mit Administratorberechtigung n der Powershell dei beiden Zeilen ausführen:
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    Install-module -name posh-acme

    VG Dieter

    Antworten
  32. Hallo,
    ich musste:

    $AllProtocols = [System.Net.SecurityProtocolType]’Tls11,Tls12′
    [System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols

    aus deinem anderen Beitrag ins Script einfügen, damit PoshACME heruntergeladen werden konnte.
    Danke für die Arbeit und Mühe.

    Gruß
    DeeZwoo

    Antworten
  33. Erstmal Danke für den Certificate Assistant, funktioniert super bei mir!
    Ich habe aber noch eine Frage:
    Ich plane mit einer SPAM Firewall (Barracuda Email Security Gateway), die das Zertifikat auch haben möchte.
    Wenn ich das Let’s Encrypt da aber hochlade, sagt er mir „Missing Chainfile, untrusted“. Heißt, ich brauch wohl zusätzlich das Intermediate Zertifikat.
    Wie komm ich an das ran oder komm ich um ein offizielles SSL Zertifikat nicht herum?

    Antworten
  34. Hi guys,
    Thanks and greetings to Frank from „Frankreich“)).
    I put below the steps I did to resolve the error messages (Server 2012R2 + Exchange 2013). Maybe it will help someone:
    Requirements: PowerShell 5.1 and .NET 4.7.1
    Open PowerShell as Admin and run:
    1) [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    2) Register-PSRepository -Default
    3) Get-PSRepository
    4) Install-PackageProvider -Name NuGet -Force -confirm: $false
    5) Install-Module -Name Posh-ACME -force -confirm: $false
    Otherwise, i have a question about the scheduled task. My current command which worked with the old script is as follows:
    -Command „&’C:\CertificateAssistant_v3\CertificateAssistant_v3_EX2013.ps1′ -renew:$true“
    According to Frank’s message, -renew: $ true is no longer useful. How can I make my command work properly without renew?
    Thank you in advance.

    Antworten
  35. Hi Leute,

    ich bekomme folgende Fehlermeldung bei meinem Exchange 2016 auf Windows Server 2016:



    20.05.2020 18:35:06 – Exchange FQDNs – Info – Make them unique
    20.05.2020 18:35:06 – Exchange FQDNs – Info – FQDNs are unique
    20.05.2020 18:35:06 – LE System – Info – Setting LE Mode
    20.05.2020 18:35:06 – LE System – ERROR – Can’t set LE Mode: Das Argument für den Parameter „DirectoryUrl“ kann nicht überprüft werden. Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
    20.05.2020 18:35:06 – LE System – Info – Checking for existing LE Account
    20.05.2020 18:35:06 – LE System – ERROR – No LE Account was found, Error Creating a new one: No ACME server configured. Run Set-PAServer first.
    20.05.2020 18:35:06 – LE Certificate – Info – Trying to create a new order for a certificate
    20.05.2020 18:35:06 – LE Certificate – ERROR – Can’t order certificate: No ACME server configured. Run Set-PAServer first.
    20.05.2020 18:35:06 – LE System – Info – Creating Autorisation files for LE verification
    20.05.2020 18:35:06 – LE System – ERROR – Can’t create Autorisation files for LE verification
    20.05.2020 18:35:06 – LE System – Info – Asking LE to verify the order
    20.05.2020 18:35:06 – LE System – ERROR – Can’t send ChallengeAck
    20.05.2020 18:35:06 – LE System – INFO – Let’s give LE some time to validate (1 min)
    20.05.2020 18:36:06 – LE System – INFO – Time to wake up, need coffee!
    20.05.2020 18:36:06 – LE System – INFO – Let’s check the authorization
    20.05.2020 18:36:06 – LE System – ERROR – Can’t get authorization info
    20.05.2020 18:36:06 – LE System – ERROR – Authorization failed

    Hat jemand eine Idee wo der Fehler liegen kann ?
    Das alte v2 Script läuft problemlos durch …

    Ich konnte leider auch keine Antwort zu dem Problem im Forum oder hier in den Kommentaren finden.
    Auch Google spuckt nichts brauchbares aus …

    Beste Grüße

    Antworten
  36. i am trying to use this new script on my exchange 2016 server but i get this error

    27.05.2020 20:23:17 – System – Info – Geting system parameters
    27.05.2020 20:23:17 – System – Info – Certificate Assistant Exchange 2016 Version
    27.05.2020 20:23:17 – System – Info – PowerShell Version: 5.1.14393.3471 OSVersion: 10.0.1439
    27.05.2020 20:23:17 – Check Posh-ACME – Info – Check if Module installed
    27.05.2020 20:23:17 – Load Posh-ACME – Info – Posh-ACME is installed, try to load it
    27.05.2020 20:23:17 – Load Posh-ACME – Error – Posh-ACME is installed, but can’t load it

    Anyone know how i can fix this ?

    Antworten
  37. Hier ebenfalls:
    29.05.2020 15:39:58 – LE System – INFO – Let’s refresh the order
    29.05.2020 15:39:58 – LE System – INFO – Let’s check if order is ready
    29.05.2020 15:39:58 – LE System – ERROR – Order is NOT ready

    Hat jemand eine Idee?

    Antworten
    • selbes Problem hier:

      02.06.2020 09:05:18 – LE System – INFO – Let’s refresh the order
      02.06.2020 09:05:19 – LE System – INFO – Let’s check if order is ready
      02.06.2020 09:05:19 – LE System – ERROR – Order is NOT ready

      habe die Zeit schon auf 2min hochgesetzt, trotzdem das gleiche Phänomen.

      Antworten
      • Mein eigentliches Problem befindet sich ein paar Zeilen weiter oben:
        02.06.2020 10:50:23;LE System;ERROR;Can’t create Autorisation files for LE verification;Cannot convert ‚System.Object[]‘ to the type ‚System.String‘ required by parameter ‚FilePath‘. Die angegebene Methode wird nicht unterstützt.

        Eigentlich müsste das Skript hier schon beenden, denn ohne Authorization Files geht ja eh nix.

        Antworten
        • Um das Problem zu beheben, habe ich folgende Zeile geändert:
          $WebsitePath = (Get-Website „Default Web Site“).PhysicalPath
          zu
          $WebsitePath = (Get-Website „Default Web Site“).PhysicalPath | Select-Object -First 1

  38. Ich kriege diese Fehlermeldung:

    02.06.2020 09:27:52 – LE Certificate – ERROR – Can’t order certificate: failed to verify nonce validity: nonce.NonceService.Redeem timed out after 15006 ms
    02.06.2020 09:27:52 – LE System – Info – Creating Autorisation files for LE verification
    Get-PAAuthorizations : Das Argument kann nicht an den Parameter „AuthURLs“ gebunden werden, da es NULL ist.
    In C:\CertificateAssistant\CertificateAssistant_v3_EX2016.ps1:501 Zeichen:21
    + $auths = $LEOrder | Get-PAAuthorizations
    + ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData: (:) [Get-PAAuthorizations], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Get-PAAuthorizations

    02.06.2020 09:27:52 – LE System – Info – Asking LE to verify the order
    Send-ChallengeAck : Das Argument kann nicht an den Parameter „ChallengeUrl“ gebunden werden, da es sich um eine leere
    Zeichenfolge handelt.
    In C:\CertificateAssistant\CertificateAssistant_v3_EX2016.ps1:517 Zeichen:21
    + $auths.HTTP01Url | Send-ChallengeAck
    + ~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData: (:) [Send-ChallengeAck], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Send-ChallengeAck

    02.06.2020 09:27:52 – LE System – Info – Successfully informed LE to verify the order
    02.06.2020 09:27:52 – LE System – INFO – Let’s give LE some time to validate (1 min)
    02.06.2020 09:28:52 – LE System – INFO – Time to wake up, need coffee!
    02.06.2020 09:31:00 – LE System – INFO – Let’s check the authorization
    Get-PAAuthorizations : Das Argument kann nicht an den Parameter „AuthURLs“ gebunden werden, da es NULL ist.
    In C:\CertificateAssistant\CertificateAssistant_v3_EX2016.ps1:540 Zeichen:27
    + $authstates = $LEOrder | Get-PAAuthorization
    + ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData: (:) [Get-PAAuthorizations], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Get-PAAuthorizations

    02.06.2020 09:31:00 – LE System – INFO – Let’s refresh the order
    02.06.2020 09:31:00 – LE System – INFO – Let’s check if order is ready
    02.06.2020 09:31:00 – LE System – ERROR – Order is NOT ready

    Gruß
    Daniel

    Antworten
  39. Damit es auf SBS2011 funktioniert, musste ich noch folgendes am Anfang des Skripts einfügen:

    # Import Exchange Management Shell
    . ‚C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1‘
    # and connect to Exchange
    Connect-ExchangeServer -auto

    Antworten
  40. Hallo zusammen,

    habe meinen SBS 2011 Dino auf die Version 3 bringen können.

    Die Anleitung nach dem Download im ReadMe zeigte mir zwei Links an, die man laden soll. Lädt man den ersten und installiert diesen, wird der Inhalt des zweiten Links bereits mit installiert (und ist neuer als 4.5.X)

    Dann zwei Neustarts zur Sicherheit.

    Dann nutzte ich wie oben geraten mit Admin Rechten in der Powershell (für mich als aktuell erkennbar an der 2016 beim Start)

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    gefolgt von

    Install-module -name posh-acme

    Die anderen Anleitungen mit anderen Repositoryeinstellungen haben bei mir nicht funktioniert.

    Dann habe ich das Script am Anfang mit folgendem obigen Tip angepasst:

    # Import Exchange Management Shell
    . ‚C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1‘
    # and connect to Exchange
    Connect-ExchangeServer -auto

    Es kommen dann zwar orangene Warnungen, die bei mir aber kein Hindernis waren.

    Als es dann immer noch nicht komplett klappte, habe ich den obigen Tip der Ergänzung der WebsitePath Zeile von

    $WebsitePath = (Get-Website „Default Web Site“).PhysicalPath

    zu

    $WebsitePath = (Get-Website „Default Web Site“).PhysicalPath | Select-Object -First 1

    genutzt.

    Bei meinem nächsten Test kam dann eine Meldung , dass das Zertifikat nicht aktiviert wurde, weil einem anderen (wohl meinem bisherigen) der Vorzug gegeben würde. Es wird allerdings doch installiert und ich bekam nur das Fake Zertifikat beim Testaufruf gezeigt.

    So setzt ich den Mode von Stage auf Prod und schon wird das korrekte Zertifikat installiert und auch bei einem Client angezeigt.

    Seit dem läuft es.

    Ich danke daher dem Scriptersteller und allen Tipgebern für die Einzelheiten, die es mir ermöglicht haben mein altes System wieder etwas sicherer zu machen.

    Antworten
  41. Danke für das Super Script.

    Ein kleines Problem hatte ich damit, ich starte das SCript automatisch jeden zweiten Monat und es kommt vor das mit PoshACME meldet, dass das Zertifikat noch nciht „abgelaufen“ ist und fragt ob man es überschrieben möchte.
    Somit bleibt das Script stehen und wartet auf eine Eingabe (Y/N/S).
    Ich konnte es damit lösen hinter Zeile 490 „NEW-PAOrder“ noch ein -Force zu hängen, dann fragt er nicht nach.

    Grüsse

    Antworten
  42. Hallo Frank, Hallo Zusammen,

    @Frank: Großes Lob an Deine Seite !! hat mir schon sooo viel geholfen ! DANKE !!

    Ich verstehe die Erneuerung nicht bzw. finde keine Angabe dazu:

    Muß ich einen Task/Aufgabe anlegen oder wird das durch das Script erledigt ?
    Wenn ja, einfach das Script erneut ausführen lassen ?

    Sorry ! Bestimmt eine blöde Frage …

    VG Oli

    Antworten
    • Hat sich erledigt.

      Wer lesen kann, und sich die Zeit nimmt, ist im Vorteil :)

      Aufgabe mit Start des Scripts anlegen und gut ist ; dachte ich …

      Problem: Die Aufgabe wurde nicht abgeschlossen
      Lösung: siehe Beitrag von Manny vom 15.06. – Danke !
      => in Zeile 490 -Force angehängt und es flutscht :)

      Antworten

Schreibe einen Kommentar