|
| 1 | +# 2. TLS |
| 2 | +Für die verschlüsselte Kommunikation zwischen Nutzer und Webserver sind TLS-Zertifikate |
| 3 | +erforderlich. |
| 4 | + |
| 5 | +In den Standard-Einstellungen von Betriebssystemen und Browsern ist bereits eine Auswahl |
| 6 | +vertrauenswürdiger Zertifizierungsstellen (CAs) hinterlegt. Nur Zertifikate, die von einer |
| 7 | +dieser anerkannten Stellen ausgestellt oder signiert wurden, werden vom Browser automatisch |
| 8 | +als sicher bzw. vertrauenswürdig eingestuft. Diese sogenannte "Trusted Root Certificate Authority |
| 9 | +List" wird von den jeweiligen Herstellern (z. B. Microsoft, Apple, Mozilla, Google) gepflegt und |
| 10 | +regelmäßig aktualisiert. |
| 11 | + |
| 12 | +Es gibt grundsätzlich drei Möglichkeiten, TLS-Zertifikate zu beziehen bzw. auszustellen: |
| 13 | + |
| 14 | +1. **Kommerzielle Anbieter** |
| 15 | + |
| 16 | + Zertifikate können kostenpflichtig von anerkannten Zertifizierungsstellen wie DigiCert, |
| 17 | + GlobalSign oder GoDaddy erworben werden. Sie werden häufig von Unternehmen genutzt, um |
| 18 | + zusätzliche Garantieleistungen, erweiterte Validierungen (OV/EV) oder Supportleistungen |
| 19 | + zu erhalten. |
| 20 | + |
| 21 | +2. **Kostenlose Zertifikate** |
| 22 | + |
| 23 | + Let’s Encrypt wurde 2015 von der gemeinnützigen Organisation Internet Security Research Group (ISRG) |
| 24 | + gegründet. Ziel war es, das Web durch die Bereitstellung kostenloser, automatisierter und durch offene |
| 25 | + Zertifikate sicherer zu gestalten und so verschlüsselte Verbindungen (HTTPS) zum Standard im Internet |
| 26 | + zu etablieren. |
| 27 | + |
| 28 | + Neben Let’s Encrypt existieren weitere Anbieter, die ähnliche kostenlose Zertifizierungsdienste anbieten, |
| 29 | + wie beispielsweise ZeroSSL und [Actalis](https://www.actalis.com/). Alle Anbieter unterstützen das |
| 30 | + ACME-Protokoll (Automatic Certificate Management Environment), über das die Ausstellung und Verlängerung |
| 31 | + von Zertifikaten automatisiert erfolgen kann. |
| 32 | + |
| 33 | + Diese kostenlosen Zertifikate sind von den gängigen Browsern als vertrauenswürdig anerkannt und eignen sich |
| 34 | + hervorragend für öffentliche Websites, Webanwendungen und APIs. Im Vergleich zu kommerziellen Angeboten bieten |
| 35 | + sie zwar keine zusätzlichen Garantieleistungen oder erweiterte Validierung (z. B. EV-Zertifikate), erfüllen |
| 36 | + aber auf technischer Ebene die selben Sicherheitsstandards. |
| 37 | + |
| 38 | +3. **Eigene Zertifizierungsstelle (CA)** |
| 39 | + |
| 40 | + Neben öffentlichen und kommerziellen Anbietern besteht auch die Möglichkeit, eine eigene Zertifizierungsstelle |
| 41 | + (Certificate Authority, CA) zu betreiben. Damit können eigene Zertifikate ausgestellt werden – beispielsweise |
| 42 | + für interne Server, Entwicklungsumgebungen oder Testsysteme. |
| 43 | + |
| 44 | + Diese Variante ist kostenlos, erfordert jedoch mehr administrativen Aufwand. Damit Browser und Betriebssysteme |
| 45 | + den ausgestellten Zertifikaten vertrauen, muss das Root-Zertifikat der eigenen CA manuell auf allen beteiligten |
| 46 | + Geräten installiert werden. In kontrollierten Umgebungen (z. B. Firmennetzwerke oder geschlossene Systeme) kann |
| 47 | + dies automatisiert über zentrale Verwaltungswerkzeuge erfolgen. |
| 48 | + |
| 49 | + Für den produktiven Einsatz im öffentlichen Internet ist diese Lösung jedoch nicht geeignet, da externe Nutzer |
| 50 | + das Root-Zertifikat nicht installiert haben und der Browser die Verbindung daher als nicht vertrauenswürdig |
| 51 | + einstufen würde. |
| 52 | + |
| 53 | +!!! warning |
| 54 | + Von der Verwendung selbstsignierter Zertifikate und dem Ignorieren von Browserwarnungen ist dringend abzuraten. |
| 55 | + |
| 56 | + Wer sich daran gewöhnt, Sicherheitsmeldungen einfach „wegzuklicken“, entwickelt schnell ein riskantes Verhalten. |
| 57 | + |
| 58 | +Im Rahmen dieses Guides wird auf kostenlose TLS-Zertifikate des Anbieters Let’s Encrypt gesetzt. |
| 59 | + |
| 60 | +Für die Verwaltung dieser stehen verschiedene Tools und Clients zur Verfügung. Wird nginx als Reverse Proxy |
| 61 | +eingesetzt, bietet sich die Verwendung von [acme.sh](https://github.com/acmesh-official/acme.sh), ein schlanker, |
| 62 | +in Shell geschriebener ACME-Client, der sich einfach in bestehende Umgebungen integrieren lässt, an. |
| 63 | +Traefik hingegen verwendet für diesen Zweck standardmäßig den in Go entwickelten ACME-Client [Lego](https://go-acme.github.io/lego/). |
| 64 | + |
| 65 | +Unabhängig von der gewählten Implementierung stehen bei Let’s Encrypt verschiedene [ACME-Challenge-Typen](https://letsencrypt.org/docs/challenge-types/) |
| 66 | +zur Verfügung, über die die Domainvalidierung erfolgt. |
| 67 | + |
| 68 | +Während die Challenge-Typen HTTP-01 und TLS-ALPN-01 voraussetzen, dass der Reverse Proxy aus dem Internet |
| 69 | +erreichbar ist, bietet die DNS-01-Challenge die Möglichkeit, die Domainvalidierung über einen TXT-Eintrag |
| 70 | +im DNS durchzuführen. Dadurch muss der Webserver nicht öffentlich zugänglich sein, und die ausgestellten |
| 71 | +Zertifikate können somit auch in internen Umgebungen verwendet werden. |
0 commit comments