Sicherer Webserver out of the box mit Caddy

© Michael Borgers, 123RF

HTTPS für alle

,

Mit Caddy gelingt es auch unerfahrenen Anwendern, einen Webserver vernünftig und sicher aufzusetzen. Dabei reduziert er das üblicherweise komplexe Setup von HTTPS auf ein Minimum.

In erster Linie dient ein Webserver dazu, Webseiten und deren Inhalte bereitzustellen und auszuliefern. Er erhält die Anfrage beispielsweise dann, wenn Sie mit Ihrem Webbrowser eine Webseite via HTTP oder HTTPS ansurfen. Der Browser sendet eine Anfrage als HTTP-Request zum Webserver; der nimmt sie entgegen, bereitet die angeforderten Inhalte auf beziehungsweise rendert sie und stellt sie anschließend dem Webbrowser bereit.

Die Statistik der am meisten eingesetzten Webserver führen der Apache HTTP Server, Microsofts Internet Information Services (IIS) sowie Nginx an. Bei den ersten beiden handelt es sich um Veteranen aus den 1990ern, die über vorbereitete Konfigurationen oder Zusatzmodule immer wieder an die sich ändernden, komplexen Bedürfnisse der IT-Infrastruktur angepasst wurden. Die umfangreichen Bücher und Tutorials zu Apache und IIS sprechen Bände über deren Komplexität. Nginx erblickte im Jahr 2004 das Licht der Welt, gilt als modern, leichtgewichtig und flexibel und verrichtet seinen Dienst ebenso zuverlässig und flink wie die Konkurrenten.

Die vielfachen Angriffe auf Webserver und deren Dienste bringen Systemadministratoren immer stärker in Bedrängnis und verunsichern die Nutzer. Um das Vertrauen zu erhalten, gehen mehr und mehr Admins dazu über, ihre Webseiten SSL/TSL-verschlüsselt via HTTPS auszuliefern. Das erfordert üblicherweise mehrere Schritte zum Beantragen, Installieren, Pflegen und regelmäßigen Erneuern der dafür genutzten Zertifikate. Sie gelten nur zeitlich begrenzt, je nach Certification Authority und Budget zwischen 3 Monaten und 10 Jahren.

Die Initiative Let's Encrypt [1] setzt sich zum Ziel, den ganzen Prozess zu vereinfachen, und verbucht damit bereits beachtliche Erfolge (siehe Kasten "Einfach verschlüsselt"). Zum derzeitigen Stand stellte das Projekt bereits für 63 Millionen Domains Zertifikate aus.

Einfach verschlüsselt

Das Projekt Let's Encrypt ist die erste große Initiative der gemeinnützigen Organisation Internet Security Research Group (ISRG). Sie setzt sich zum Ziel, verschlüsselte WWW-Verbindungen zum Standard zu erheben – quasi HTTPS für jedermann. Let's Encrypt setzt bei der Verschlüsselung auf das Ausstellen sogenannter Domainvalidierungszertifikate. Um zu prüfen, ob die Person, die eine Zertifizierungsanfrage stellt, auch tatsächlich Inhaber der Domain ist, erstellt und versendet Let's Encrypt einen Token zu der anfragenden Domain. Danach erfolgt eine Web- oder DNS-Abfrage, bei der sich die Domain durch einen von diesem Token abgeleiteten Schlüssel verifiziert. Das stellt sicher, dass die Inhalte auch tatsächlich vom Betreiber der Webseite stammen. Für die eigene Vertrauenswürdigkeit setzt Let's Encrypt außerdem auf größtmögliche Transparenz. Dafür nutzt das Projekt freie Software und offene Standards in Kombination mit der regelmäßigen Veröffentlichung von Transparenzberichten.

Caddy

An dieser Stelle kommt der Webserver Caddy [2] ins Spiel, der sowohl HTTP/2 (siehe Kasten "Von HTTP 1.1 zu HTTP/2") als auch eine Anbindung an Let's Encrypt von Haus aus mitbringt. Seit seiner Veröffentlichung 2015 gilt er als erster Allzweck-Webserver, der für diese Kombination dem Webmaster nur eine minimale Vorbereitung abfordert. Für Apache [3], Nginx [4] und IIS [5] gibt es zwar zu diesem Zweck ebenfalls Module und Lösungen, doch die befinden sich entweder noch in der Entwicklung oder ihr Setup gestaltet sich deutlich komplexer.

Von HTTP 1.1 zu HTTP/2

Nach langer Diskussion der Entwicklergruppen der unterschiedlichen Webbrowser steht seit Februar 2015 die Version 2.0 des Hypertext Transfer Protocols [10] zur Verfügung. Im RFC 7540 [11] beschrieben, löst HTTP/2 nach und nach das aus dem Jahr 1997 stammende HTTP 1.1 ab. Auswertungen des WWW-Datenverkehrs ergaben Ende 2017 bereits einen Anteil von 20 Prozent für HTTP/2. HTTP/2 bringt etliche Neuerungen [12] mit sich, darunter eine Datenkompression der HTTP-Header sowie das parallele Ausführen von Requests über eine einzige TCP-Verbindung ("Pipelining"). Generell zielt das Protokoll darauf ab, die zur Verfügung stehende Rechenleistung besser auszunutzen und die Zeit für die Übermittlung der Anfrage zu minimieren.

Das in der Programmiersprache Go entwickelte Caddy steht für den privaten Einsatz als kostenfreie Community-Version bereit. Möchten Sie den Webserver kommerziell nutzen, freuen sich die Entwickler über eine einmalige Zahlung von 25 US-Dollar. Das Projekt steht unter der Apache-2.0-Lizenz.

Die folgende, auf Debian 9 alias "Stretch" angepasste Beschreibung basiert auf dem Blogbeitrag von Supriyo Biswas [6]. Sie lässt sich komplett auf Raspbian übertragen, das ja bekanntermaßen auf Debian basiert. Darüber hinaus wurden die Entwicklungen seit seiner Veröffentlichung des Beitrags sowie die stärkere Verwendung von Markdown berücksichtigt.

Installation

Für Caddy stehen derzeit noch keine spezifischen Pakete für bestimmte Distributionen bereit. Im Download-Bereich der Projektseite finden Sie jedoch einen Konfigurator, mit dessen Hilfe Sie das für Ihr System passende Binary auswählen. Dazu zählen auch Varianten für ARMv5 bis ARMv7. Darüber hinaus legen Sie hier auch fest, welche Plugins Sie integrieren möchten (Abbildung 1). Abschließend generiert die Software das nach Ihren Wünschen zusammengestellte Paket. Caddy gibt es daneben unter anderem auch für Windows, viele BSD-Varianten und Mac OS.

Abbildung 1: Bereits auf der Projektseite legen Sie fest, welche Erweiterungen die Software enthalten soll.

Möchten Sie Caddy lieber über die Kommandozeile einrichten, etwa für den Einsatz auf einem Headless-System, beziehen Sie dazu als Erstes als Nutzer Root ein Shell-Skript von der Caddy-Projektwebseite (Listing 1, Zeile 1), geben diesem Ausführungsrechte (Zeile 2) und laden über den Aufruf des Skripts das gewünschte Software-Image herunter (Zeile 3). Zusätzliche Plugins geben Sie im Aufruf als durch Kommas separierte Parameter an (Zeile 4). Die Tabelle "Caddy-Plugins" zeigt eine kleine Auswahl der verfügbaren Erweiterungen.

Listing 1

 

# wget https://getcaddy.com -O getcaddy
# chmod +x getcaddy
# ./getcaddy personal
# ./getcaddy personal http.ipfilter,http.cache

Caddy-Plugins

Name des Plugins

Bedeutung

dyndns

Dynamisches DNS, etwa via Cloudflare

http.cache

Caching für HTTP

http.cgi

Erweiterung um CGI-Skripte

http.expires

Setzen eines Verfallsdatums

http.git

Veröffentlichung/Aktualisierung via Git-Kommandos

http.ipfilter

Zugriff ausgewählter IP-Adressen blockieren

http.webdav

Erweiterung um WebDAV

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

10/2019
Raspberry Pi 4B

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Sonnige Zeiten

    UV-Strahlung ist für das menschliche Auge unsichtbar, was sie umso gefährlicher macht. Die Höhe der tatsächlichen Belastung verrät Ihnen das Selbstbauprojekt UV-Sensor.

  • Gut verpackt

    Für das Ansteuern kleiner Displays gibt es keine Programme von der Stange. Mit Python und einer Pygame-Bibliothek erstellen Sie trotzdem im Handumdrehen Anwendungen.

  • Macro-Mini-Micro-Bit

    Was dem Raspberry Pi für die Computerwelt gelungen ist, versucht der BBC Micro:bit für Mikrocontroller zu wiederholen. Das für Schüler entwickelte Kit hilft beim Einstieg in die hardwarenahe Programmierung.

  • Vorhang auf

    Mit dem modernen Video-Codec HEVC (H.265) erstellte Filme spielen bisherige RasPi-Modelle oft nur ruckelnd ab. Wir testen, ob der neue Raspberry Pi 4B das besser kann.

  • Überraschung!

    Eine optimierte Architektur und mehr RAM beschleunigen den RasPi 4B deutlich. Wir prüfen, wie gut sich der Neuling als Desktop-Rechner schlägt.

  • Durchgestartet

    Ein Stresstest zeigt, wie sich der neue Raspberry Pi 4 Modell B gegenüber den älteren Modellen abhebt.

  • Vierte Generation

    Eine schnellere CPU, USB 3.0 und Gigabit-Ethernet sind nur die Highlights des Raspberry Pi 4B: Das Board bringt viele weitere Neuerungen mit.

  • Tiefenmesser

    Um die Pumpe in einem Brunnenschacht möglichst genau zu positionieren, brauchen Sie dessen Tiefe. Die ermitteln Sie mithilfe eines präzisen Messgeräts aus einem Luftdrucksensor und einem Mikrocontroller.

  • Faktencheck

    Das via DVB-T2 ausgestrahlte Digital-TV liefert Bilder in HD-Qualität. Der dabei eingesetzte H.265-Standard überfordert allerdings kleine Mini-Rechner wie den Raspberry Pi – oder geht es doch?

  • Zugriff von außen

    React Native erlaubt es, Apps mit wenigen Zeilen Code zu programmieren. Mit einem entsprechenden Server sprechen Sie so den RasPi vom Smartphone aus an.