HTTPS unter IIS 10

Eigentlich sollte heutzutage jede Webseite nur noch unter HTTPS zu erreichen sein. Viele schrecken jedoch vor dem Einsatz von HTTPS zurück, weil Sie meinen, es kostet Zeit und Geld HTTPS zu implementieren. Ich zeige euch, wie man die eigene Webseite unter Windows 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üsselungsprotokoll 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.

Nun die entscheidende Frage? Wenn ich eine eigene Webseite habe, soll diese unter HTTP, HTTPS oder gar unter beiden Protokollen erreichbar sein?

Die Frage ist einfach zu beantworten. Deine Webseite sollte immer unter HTTPS erreichbar sein, niemals unter HTTP. Es macht jedoch Sinn, für HTTP eine automatische Umleitung auf HTTPS einzurichten. In diesem Fall wird bei der Eingabe von http:// im Web-Browser automatisch die Webseite unter https:// angezeigt.

Hier die Begründung:

  1. 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.

  2. Seit 2018 markieren alle modernen Web-Browser Webseiten ohne HTTPS als potentiell unsicher. Das schreckt vor allem unerfahrene Benutzer ab.

  3. Die Google-Suche bewertet Webseiten mit HTTPS tendenziell höher als Webseiten ohne HTTPS. Das hat natürlich Auswirkung auf das Suchergebnis unter Google.

  4. Die neue 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 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. Bekannte Zertifizierungsstellen sind beispielsweise Comodo oder DigiCert. Dies sind Dienstleister, die TLS-Zertifikate mit unterschiedlich langen Laufzeiten verkaufen. Ein durchaus einträgliches Geschäft.

Seit Ende 2015 ist jedoch ein neuer Player mit im Spiel: Let’s Encrypt (zu deutsch: Lasst uns verschlüsseln). Let’s Encrypt 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 (Die Domäne beispiel.de ist natürlich schon vergeben, und dient hier nur als Platzhalter).

Wir wollen jetzt folgendes erreichen:

  1. Deine Webseite soll unter “https://www.beispiel.de" aufrufbar sein.

  2. Alle Anfragen auf “http://www.beispiel.de" werden automatisch umgeleitet auf “https://www.beispiel.de".

Wir benötigen dazu folgendes:

  1. Ein ACME-Client

  2. Ein paar Änderungen in der Datei web.config

Der ACME-Client

Einer der besten Clients für Windows ist Windows ACME Simple (WACS), eine Kommandozeilenanwendung, die sich prima im Kontext eines Windows 2016 oder 2019 Servers einsetzen lässt.

  1. Lade unter https://github.com/PKISharp/win-acme/releases die aktuellste Version herunter. Für die Version 2.0.7.315 wäre dies beispielsweise das Zip-Archiv win-acme.v2.0.7.315.zip

  2. Entpacke das Zip-Archiv in einen Ordner Deiner Wahl, z.B. c:\letsencrypt

  3. Starte die Eingabeaufforderung als Administrator

  4. Tippe c:\letsencrypt\wacs ein und bestätige mit der Eingabetaste. Windows ACME Simple (kurz WACS) wird gestartet.

    WACS Startmenü

    WACS Startmenü

  5. Wähle die Option Create new certificate.

  6. Wähle danach die Option Single binding of an IIS site.

  7. Wähle jetzt die Nummer der gewünschten Webseite aus. Existiert nur eine unter IIS, dann ist dies die Nummer 1.

WACS kommuniziert nun mit Let’s Encrypt und erfragt ein TLS-Zertifikat für die Domäne www.beispiel.de. Beim ersten Mal fragt dich WACS auch nach deiner E-Mail-Adresse. Diese wird zur Registrierung bei Let’s Encrypt verwendet.

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:

  1. Markiere im IIS-Manager die Site für beispiel.de.

  2. Rechte Maustaste und dann Im Explorer öffnen auswählen. Der Windows-Explorer öffnet sich.

  3. Suche nach der Datei web.config. Existiert sie nicht, lege im aktuellen Ordner eine leere Textdatei mit dem Namen web.config an.

  4. Öffne die Datei web.config in einem Texteditor und trage die folgende Konfiguration dort ein.

  5. 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.

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 webhosterund letsencrypt.

Teile diesen Artikel
comments powered by Disqus