Lass uns verschlüsseln – Let‘s Encrypt mit Windows Server und IIS

In einer Initiative mehrere Organisationen wie CISCO, Akamai, Mozilla und vielen anderen Größen entstand vor einiger Zeit das Projekt Let’s Encrypt mit dem Ziel mehr zu verschlüsseln und damit mehr Sicherheit in das Internet zu bekommen. Unter dem Motto „It’s free, automated, and open“ freut sich das Windows-Admin-Herz. Endlich ein Projekt welches kostenfreie Zertifikate mit einer hohen Verbreitung und damit Browser- und Endgeräteakzeptanz zur Verfügung stellt. Doch in der Praxis mag das in der Linux-Welt funktionieren wie sieht es in der Windows-Welt aus?

Man beachte: Let’s Encrypt befindet sich noch im Beta-Stadium. Mit Fehlern, Bugs oder Änderungen muss man an dieser Stelle noch rechnen.

Für Windows Server wurden von der Community entsprechende PowerShell Cmdlets zur Verfügung gestellt. Dies müssen über die PowerShell Gallery geladen und installiert werden. Nach der Installation der PackageManagement PowerShell Modules Preview von Microsoft stehen das Cmdlet Save-Module bereit mit welchen wir die ACME-Module nachladen und anschließend mit Install-Module installieren können.

Mit Get-Command *ACME* könnt ihr jetzt prüfen welche Cmdlets jetzt bereitstehen. Alle jetzt folgenden Schritte wurden auf Github dokumentiert und erläutert. Als erstes müssen wir einen Speicher für Zertifikate und Anforderungen registrieren.

Weiter geht’s mit der Registrierung anhand der E-Mail-Adresse und Bestätigung der Bedingungen.

Jetzt folgt der DNS-Name welchen wir registrieren wollen. Es ist auch möglich ein Zertifikat mit mehreren Namen zu erstellen. Führt dazu diesen Befehl einfach mehrfach mit verschiedenen Aliasen z.B. dns, dns1, dns2 usw. aus. In meinem Beispiel kommt nur ein Name für diesen Blog zum Tragen.

Let’s Encrypt unterstützt jetzt 3 Methoden zur Validierung der Domäne:

  • Möglichkeit 1 – Die vollautomatische Abfrage über http wobei der zu prüfende Inhalt gebildet wird
  • Möglichkeit 2 – Die Abfrage über http wobei der zu prüfende Inhalt von Hand hinzugefügt werden muss
  • Möglichkeit 3 – Die Prüfung über DNS wobei ein TXT-Record im DNS für die entsprechende Domäne erstellt werden muss

Bei der Wahl der drei Möglichkeiten klingt die vollautomatische Abfrage natürlich am besten. Let’s Encrypt Zertifikate haben schließlich nur eine Gültigkeit von 3 Monaten. Je geringer der Aufwand des so höher der Nutzen. Leider schlugen alle Versuche über http fehl. Der Inhalt wurde wie dokumentiert erstellt nur die Validierung durch Let’s Encrypt brachte einen Fehler. Hierzu muss man erwähnen, dass ein genutzter Alias, in unserem Beispiel „dns“ nicht noch mal genutzt werden kann und leider über die vorhanden Cmdlets auch nicht gelöscht werden kann. Es geht also unter neuem Namen wieder von vorne los.

Damit ich an mein Zertifikat komme musste jetzt DNS genutzt werden (Möglichkeit 3).

Im Ergebnis von Complete-ACMEChallenge findet ihr jetzt den entsprechenden DNS-Record samt Inhalt. Prüft bitte den Eintrag vorab mit NSLOOKUP damit der angeforderte Name und Wert wirklich aufgelöst werden kann. Ein Fehler (Status invalid) und der ganze Spaß beginnt wieder von vorne!

letsencrypt2

Passt der Name dann könnt ihr die Anforderung absenden.

Wartet ein bis zwei Minuten und prüft dann den Status mit

Hier sollte jetzt ein „valid“ stehen und damit ist der erste Teil abgeschlossen.

letsencrypt3

Weiter geht’s mit der eigentlichen Zertifikatsanforderung. In den bisherigen Schritten haben wir uns nur Registriert und den Besitz der Domäne bestätigt. Zum Anfordern eines Zertifikates gibt es nachfolgenden Befehl wobei der Alias wieder frei gewählt werden kann.

Über diese Befehle wird das Schlüsselpaar gebildet und muss anschließen nur noch geladen werden. Hier ist zu beachten, dass ein Windows Server nun einmal ein PFX zum Import in den Zertifikatsspeicher benötigt. Das nötige Cmdlet steht auch zur Verfügung funktionierte aber in meinem Fall leider nicht. Den Fehler konnte ich bisher nicht finden.

Damit ich dennoch an mein Zertifikat komme musste ich also wieder zu alten Hilfsmittel greifen. Dabei erstellte ich den öffentlichen und privaten Schlüssel mit den ACME Cmdlets und setzte diese Teile mit Hilfe von zu einem PFX zusammen. Ich habe diesbezüglich bereits einen Artikel geschrieben (IIS und SSL Zertifikate – PFX Datei aus öffentlichen und privaten Schlüssel erstellen).

Mein Fazit zu dem Thema: Die Idee und der Zweck sind lobenswert. Leider gehen die Hersteller nicht von einem Windows Webserver mit IIS aus. Der Aufwand für ein Zertifikat für drei Monate ist schon nicht unerheblich und wird dem Slogan „It’s free, automated, and open“ nur teilweise gerecht wird. Weil sich das Projekt noch in der Beta-Phase befindet werde ich das jetzt so hinnehmen. Ich muss ja spätestens in drei Monaten wieder an den Start um das Zertifikat zu verlängern.

Bis dahin viele Grüße!

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.