Neue Version des Exchange Zertifikatsassistent für Let’s Encrypt

Am 06.02.2017 hatte ich die erste Version des Zertifikatsassistent für Exchange 2016 und Let’s Encrypt veröfferntlicht. Der Zertifikatsassistent vereinfacht das Anfordern, Erneuern und Installieren eines SSL-Zertifikats für Exchange 2016. Nun gibt es Dank Bjoern eine neue Version.

Bjoern hat sich die Mühe gemacht und einige Änderungen vorgenommen, sodass der Zertifikatsassistent auch mit Exchange 2010 und Exchange 2013 funktioniert. Des weiteren ist das mehrmalige Ausführen pro Tag dank Bjoerns Änderungen nun auch möglich. Häufiges Ausführen des Scripts ist allerdings mit etwas Vorsicht zu genießen, hier gibt es Limits von Let’s Encrypt:

https://letsencrypt.org/docs/rate-limits/

Falls das ACMESharp Modul nicht bereits installiert ist, wird nun die Version 0.8.1 durch das Script installiert. Die Version des ACMESharp Moduls ist zwar etwas älter, aber damit funktioniert die HTTP Validierung durch Let’s Encrypt noch.

Nach wie vor gelten ein paar Voraussetzungen für den Assistenten, diese sind hier beschrieben:

https://www.frankysweb.de/exchange-2016-zertifikatsassistent-fuer-lets-encrypt/

  • Der Exchange Server muss unter Port 443 und 80 öffentlich erreichbar sein
  • PowerShell IIS Modul (Webadministration)
  • Exchange Management Shell
  • ACMESharp PowerShell Client (wird installiert, wenn nicht vorhanden)

Neue Version des Exchange Zertifikatsassistent für Let’s Encrypt

Die aktuelle Version des Zertifikatsassistenten kann hier runtergeladen werden:

Durch die geplante Aufgabe wird das Zertifikat 4 Tage vor Ablauf erneuert. Ob das Zertifikat erneuert wurde, sollte also 3 Tage vor Ablauf kontrolliert werden.

Ein komplette Überarbeitung des Scripts habe ich ebenfalls vorgesehen, bin aber leider noch nicht dazu gekommen. Es steht erst einmal ein Update für den Exchange Reporter in den Startlöchern. Verbesserungsvorschläge und Wünsche sind per Mail willkommen.

Vielen Dank an Bjoern!

Update 10.09.17: Edwin van Brenk hat das Script ins Englische übersetzt, vielen Dank dafür! Link siehe unten.

Edwin van Brenk has translated the script to English language. Many thank for your work. You will find the English version here:

9 Replies to “Neue Version des Exchange Zertifikatsassistent für Let’s Encrypt”

  1. Getestet auf SBS2011, Exch2010 SP3, CU17 bzw. CU18 (Stand 09/2017)
    set-executionpolicy bypass
    und Windows Management Framework 5.1 installieren müssen https://www.microsoft.com/en-us/download/details.aspx?id=54616

    Skript funktioniert 1a! Null IIS-Kenntnisse erforderlich, keine Exchange, gar nix. Funktioniert sogar EINFACHER als der Exchange-/SBS-integrierte Assistent und der ist nicht öffentlich gültig.
    Aufgabenplanung auch Task erstellen lassen und Erneuerung auf jedes Monat eingestellt.

    TOP Skript!

  2. Hallo Mr Buabe,

    soweit ich weiss ist Powershell 5 inkompatibel mit dem SBS 2011 – gibt es da irgendwelche Seiteneffekte oder Fehlermeldungen?
    Ist das in mehreren Installationen getestet?

  3. Powershell v5 wird nur für PSGet benötigt um ACMESharp zu installieren. Über kleine Umwege kann man ACMESharp auch manuell ohne PSGet installieren (z. B. Save-Module von einem anderem System mit PSv5 und dann in den entsprechenden Powershell Module Ordner auf dem Zielsystem kopieren). Wichtig hierbei, die Version 0.8.1 verwenden, mit der aktuellen Version von ACMESharp gab es bei meinem Test Probleme.

    WMF Updates würde ich bei Exchange Servern vermeiden: „Version of Windows Management Framework built into the release of Windows Server you’re installing Exchange on.“ siehe https://technet.microsoft.com/de-de/library/ff728623(v=exchg.150).aspx

  4. Hallo!
    Ein super Skript! Dafür erst mal vielen Dank!!
    Ich habe aber nun ein kleines Problem auf einem Server 2016 an dem ich schier verzweifle … :-(
    Und zwar kann bei mir ACME nicht installiert werden, da die PS angeblich keine Verbindung zum Internet hat. Daher kann nichts nachgeladen werden. Der Server ist aber direkt ohne Proxy mit dem Internet verbunden. Der Server steht zu Hause und hängt hinter einer FritzBox. Ping an eine externe URL funktioniert auch.
    Auf einem Server in Azure hat es auch problemlos funktioniert, auch direkt im Internet und auch 2016. Da läuft das Skript ohne Probleme durch.
    Von Exchange her ist auf beiden Seiten 2016 mit CU6 installiert.
    Ich finde einfach den Unterschied bei beiden Servern wegen der Verbindung zum Internet!!!
    Habt dazu vielleicht jemand eine Idee???
    Danke an alle schon im Voraus!
    Viele Grüße
    Carsten

  5. das Script an sich ist Super !!!
    Auf dem Server 2012R2 mit Exchange 2016 CU6 musste ich allerdings einige Unwegbarkeiten ausräumen, damit das Script fehlerfrei durchläuft:
    PSget gibts für die PS 3 oder 4 als MSI-Download: hier: https://docs.microsoft.com/de-de/powershell/gallery/psget/get_psget_module
    damit kann man dann das passende ACMESharp installieren mit Install-Module -Name ACMESharp -RequiredVersion 0.8.1
    und dann läuft das Script einwandfrei durch

    Von Installation des PS 5 auf dem 2012R2 mit Exchange wird abgeraten, was ich auch bestätigen kann: davon geht dann die Exchange-PS-Console flöten.

    Danke und Gruß

    Alexander

  6. Nachtrag: ACMESahrp bitte mit Install-Module -Name ACMESharp -RequiredVersion 0.8.1 -AllowClobber installieren :) sons

    @Frank, kannst du die Kommentare zusammenführen? Danke

  7. vielleicht kann mir hier jemand helfen:
    Exchange fängt 3 Monate vor Ablauf eines Zertifikats Errors ins Eventlog zu schreiben:
    „ID 12017: An internal transport certificate will expire soon.
    Thumbprint:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, expires: 04.01.2018 08:00:34“
    und coolerweise noch eine weitere:
    „ID 12018 The STARTTLS certificate will expire soon: subject: email.xxxxxxx.de, thumbprint: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, expires: 04.01.2018 08:00:34. Run the New-ExchangeCertificate cmdlet to create a new certificate.“
    das ist zwar nur ein Schönheitsfehler, aber dennoch nervig.
    das neue Zertifikat zu holen ist hier ja keine Lösung, irgendwo müsste man den Zeitpunkt der Meldung nur verstellen können (eine Woche vorher oder so), nur wo?

    Danke im Voraus

  8. Mich würde auch interessieren ob es eine Lösung zu dem von Alexander Schröder angesprochenen Fehler gibt.

  9. Hallo,
    Nach ein bisschen herumprobieren lief das Script auch bei mir durch (W2k12R2/Ex 2016) bis dann zum schluss diese Fehlermeldung kommt.
    „Carry out validation: Cert171120170209-1
    Carry out validation: Cert171120170209-2
    Carry out validation: Cert171120170209-3
    Carry out validation: Cert171120170209-4
    wait 30 Seconds…
    Check whether the DNS names have been validated…
    Update Alias: Cert171120170209-1
    Error: Validation failed for alias Cert171120170209-1“
    Ports 80/443 sind weitergeleitet, Firewall ist aus.
    Woran könnte das liegen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.