Dieser Artikel zeigt Euch, wie man die eigene Webseite unter Windows Server 2019 oder Windows Server 2016 mit Hilfe des IIS Web-Servers und Let’s Encrypt einfach und kostenlos mit HTTPS absichern kann.
Diskussion
Transport Layer Security (kurz TLS) ist ein Verschlüsselungsverfahren zum sicheren Übertragen von Daten über öffentliche Netzwerke. Bekannter ist es immer noch unter dem alten Namen SSL (Secure Sockets Layer). TLS ist die Grundlage für das Übertragungsprotokoll HTTPS, einer Erweiterung des HTTP-Protokolls, das die Übertragung von Daten verschlüsselt.
Wenn du in Deinem Web-Browser eine Webseite aufrufst, dann wird sie dir entweder per HTTPS oder aber HTTP übermittelt. Du erkennst das am Präfix der URL. Lautet dieser http://
, dann ist es eine HTTP-Verbindung, lautet er https://
, dann ist es eine HTTPS-Verbindung.
Da HTTP-Verbindungen in allen modernen Web-Browsern mittlerweile als potentiell unsicher gekennzeichnet werden, gibt es kaum noch öffentliche Webseiten ohne HTTPS. Aber warum ist das so?
-
HTTPS verschlüsselt den Datenverkehr zwischen dem Web-Browser des Anwenders und deiner Webseite. Niemand außer euch beiden kann also sehen, welche Daten ihr untereinander austauscht. Und was fast noch wichtiger ist, niemand kann diese Daten ändern. Der letzte Aspekt wird leider viel zu oft unterschätzt. Das Argument, dass die eigene Website nur statischen Inhalt anzeigt und keine Benutzerdaten erfragt, geht hier ins Leere. Stell dir vor, jemand fängt alle Anfragen für Deine Webseite ab und lenkt sie stattdessen auf eine andere Webseite mit kriminellem Inhalten um. Das ist nicht schön, mit HTTPS kannst Du dies zuverlässig unterbinden.
-
Die Datenschutzgrundverordnung (DSGVO) verpflichtet Webseiten-Betreiber, das eigene Angebot nach dem aktuellen Stand der Technik zu schützen (siehe Art. 32 DSGVO Sicherheit der Verarbeitung). HTTPS als ein Baustein in der Sicherheitsarchitektur kann ohne Zweifel als aktueller Stand der Technik betrachtet werden.
-
Die Unterstützung von HTTP/2 setzt den Einsatz von TLS voraus.
-
Die Google-Suche bewertet Webseiten mit HTTPS tendenziell höher als Webseiten ohne HTTPS. Das hat natürlich Auswirkung auf das Suchergebnis unter Google.
Wen das nicht überzeugt, dem sei die Webseite https://doesmysiteneedhttps.com ans Herz gelegt.
Die Nutzung von HTTPS für die eigene Webseite muss nichts kosten und kann mit sehr geringem Aufwand implementiert werden. Im weiteren Verlauf dieses Blog-Artikels zeige ich euch, wie einfach das gehen kann.
Let’s Encrypt
Die Grundlage von HTTPS sind TLS-Zertifikate, die von einer vertrauenswürdigen Zertifizierungsstelle ausgegeben werden. Let’s Encrypt (zu deutsch: Lasst uns verschlüsseln) ist eine Zertifizierungsstelle, die kostenlose TLS-Zertifikate anbietet. Diese sind nur drei Monate gültig und werden durch Automation regelmäßig erneuert. Hauptsponsoren dieses Projekts sind unter anderem die Electronic Frontier Foundation (EFF), die Mozilla Foundation, Facebook, Google Chrome und Cisco Systems.
Grundlage für die automatische Bereitstellung und Aktualisierung von Zertifikaten durch Let’s Encrypt ist das sogenannte ACME-Protokoll (Automatic Certificate Management Environment Protocol), ein standardisiertes Internetprotokoll, das unter anderem prüft, ob der Anfragende auch wirklich die Kontrolle über eine Domäne hat.
Als Betreiber einer oder mehrerer Webseiten benötigt man lediglich einen ACME-kompatiblen Client und schon kann man bei Let’s Encrypt neue TLS-Zertifikate erfragen, und das kostenlos. Klingt gut, oder?
HTTPS unter IIS 10
Ich setze jetzt einfach mal voraus, du hast bereits eine Webseite unter IIS 10 gehostet. Sagen wir, diese Webseite ist mit der Domäne beispiel.de
verbunden und ist unter http://www.beispiel.de
aufrufbar.
Wir wollen jetzt folgendes erreichen:
-
Deine Webseite soll unter https://www.beispiel.de aufrufbar sein.
-
Alle Anfragen auf http://www.beispiel.de werden automatisch umgeleitet auf https://www.beispiel.de.
Wir benötigen dazu folgendes:
-
Einen ACME-Client
-
Ein paar Änderungen in der Datei
web.config
Der ACME-Client
Einer der besten Clients für Windows ist Windows ACME Simple (WACS), eine Open Source-Kommandozeilenanwendung, die sich prima im Kontext eines Windows 2019 oder 2016 Servers einsetzen lässt.
-
Lade Dir unter https://github.com/win-acme/win-acme/releases die aktuellste Version herunter. In der Regel wird dies die Standardversion (Trimmed Release) für 64bit sein (z.B.
win-acme.v2.1.14.996.x64.trimmed.zip
). -
Entpacke das Zip-Archiv in einen Ordner Deiner Wahl, z.B.
c:\letsencrypt
. -
Starte die Eingabeaufforderung als Administrator.
-
Tippe
c:\letsencrypt\wacs
ein und bestätige mit derEingabetaste
. Windows ACME Simple (kurz WACS) wird gestartet. -
Wähle die Option
Create certificate (default settings)
. -
Wähle jetzt die Nummer der gewünschten Webseite aus. Existiert nur eine unter IIS, dann ist dies die Nummer
1
. -
Wähle danach die Option
Pick *all* bindings
, alsoa
.
-
Es werden jetzt alle Bindungen der Webseite angezeigt. In unserem Beispiel ist dies nur eine Bindung. Bestätige mit der
Eingabetaste
.
Beim aller ersten Mal:
-
möchte WACS, dass du dir die Nutzungsbedingungen (Terms of Service) von Let’s Encrypt durchliest.
-
fragt dich WACS nach Deiner E-Mail-Adresse zur Registrierung bei Let’s Encrypt. Bei Problemen (z.B. bei nicht durchgeführter Erneuerung eines Zertifikats) oder Missbrauch wirst du automatisch von Let’s Encrypt per E-Mail benachrichtigt.
Sind alle Fragen beantwortet, kommuniziert WACS mit Let’s Encrypt und erfragt ein TLS-Zertifikat für die Domäne www.beispiel.de
.
Das war’s. Deine Webseite hat jetzt eine zusätzliche HTTPS-Bindung bekommen, und diese wird automatisch alle 55 Tage erneuert. WACS erstellt dazu eine neue Aufgabe in der Windows-Aufgabenplanung. Ein Test in einem Web-Browser mit https://www.beispiel.de
sollte erfolgreich funktionieren.
Umleitung von HTTP auf HTTPS:
Gehe wie folgt vor:
-
Markiere im IIS-Manager die Site für
beispiel.de
. -
Rechte Maustaste und dann
Im Explorer öffnen
auswählen. Der Windows-Explorer öffnet sich. -
Suche nach der Datei
web.config
. Existiert sie nicht, lege im aktuellen Ordner eine leere Textdatei mit dem Namenweb.config
an. -
Öffne die Datei
web.config
in einem Texteditor und trage die folgende Konfiguration dort ein.<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
-
Speichere die Datei und starte die Webseite im IIS-Manager neu.
Ein Test in einem Web-Browser mit http://www.beispiel.de
sollte erfolgreich auf https://www.beispiel.de
umleiten.
HTTP/2
Die Konfiguration von HTTPS unter IIS hat noch einen weiteren angenehmen Nebeneffekt. IIS 10 unterstützt in diesem Fall automatisch das HTTP/2-Protokoll. Alle modernen Web-Browser haben diesen Protokollstandard bereits implementiert und können daher ab sofort per HTTP/2 mit deiner Webseite kommunizieren.
HTTPS unter Apache, Linux etc.
Es stehen zahlreiche ACME-Clients zur Auswahl, insbesondere unter Linux. Eine Liste mit ACME-Clients findest du hier auf den Seiten von Let’s Encrypt. Der von Let’s Encyrpt empfohlende Standard-Client ist Certbot. Leider ist dieser Client nicht unter Windows verfügbar.
Fazit
Das Konfigurieren von HTTPS für die eigene Webseite ist nicht besonders schwer und kostet nichts. So langsam bieten auch immer mehr Webhoster eine direkte Unterstützung von Let’s Encrypt an. Es lohnt sich hier eine Google-Suche mit den Stichworten webhoster
und letsencrypt
.
Artikelhistorie
- 20.06.2019
- Erstveröffentlichung
- 29.10.2019
- Anpassung für Windows 2019
- Hinweise zu HTTP/2 eingefügt
- Neue Bildschirmabbildungen und aktualisierte Beschreibung zu WACS
- 03.02.2021
- Einleitung überarbeitet
- Neue Bildschirmabbildungen und aktualisierte Beschreibung zu WACS