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

12/2019
RasPi-Alternativen

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Grußbotschaften

    Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

  • Das Runde und das Eckige

    Mit dem MCP4725 ergänzen Sie einen RasPi um einem D/A-Wandler, der bei Bedarf noch weitere Funktionen erfüllt.

  • Alles unter Kontrolle

    Schon ein einfaches Mikrocontrollerboard wie das CY8CKIT-049-42xx bietet erstaunlich viele Möglichkeiten beim Ansteuern von Hardware.

  • Viele Kerne

    Das Spresense Development Board von Sony lässt sich mit der Arduino IDE programmieren und bringt auch ein eigenes Entwickler-SDK mit.

  • Exotische Früchte

    Der aus China stammende Orange Pi positioniert sich mit einem guten Preis und interessanten Features gegen die RasPi-Truppe. Kann er sich auch behaupten?

  • Flexibler Surfer

    Mit dem neuen RasPi 4 setzen Sie einen öffentlichen Webkiosk schnell und kostengünstig auf.

  • Auskunftsfreudig

    Viele Devices, so auch der E.ON-Aura-Controller, verwenden eine Schnittstelle namens REST, um Zustandsdaten zu übermitteln. Mit ein wenig Bastelei lesen Sie diese auch über Ihr Smartphone aus.

  • Doppelt gemessen

    Mit wenig Aufwand und einem Pi Zero realisieren Sie einen mobilen Zweikanal-Spannungsprüfer.

  • Elegant zusammengeführt

    Tizonia streamt Musik von Online-Quellen und lokalen Sammlungen. Die schlanke Architektur macht den Player zur guten Wahl für den Einsatz auf dem RasPi.

  • Kommunikativ

    Nicht jeder traut sich zu, sein eigenes Smartphone zu bauen. Allerdings kann jeder Linux-Nutzer den Raspberry Pi im Handumdrehen zu einem VoIP-Telefon aufrüsten.