Einrichtung von HTTPS (SSL/TLS) mit Let's Encrypt
1. Worum geht es in dieser Vorlesung und warum ist es wichtig
In der modernen Welt ist HTTPS bereits der Standard für alle Websites geworden. Wenn du möchtest, dass deine Nutzer sich sicher fühlen und Google deine Website nicht im Suchmaschinenranking herabstuft (ja, HTTPS beeinflusst SEO), musst du SSL/TLS einrichten. Das HTTPS-Protokoll schützt die zwischen Nutzer und Server übertragenen Daten durch Verschlüsselung, wodurch ein Abfangen durch Angreifer ausgeschlossen wird.
In dieser Vorlesung gehen wir Schritt für Schritt durch, wie du kostenlos HTTPS für deinen Webserver mit Let's Encrypt einrichtest. Let's Encrypt ist eine autorisierte Zertifizierungsstelle (CA), die kostenlose Zertifikate und Tools für deren Installation bereitstellt. Wir lernen auch, wie man die Zertifikate automatisch verlängert, um den Kopfschmerz durch deren Ablauf zu vermeiden.
HTTP vs. HTTPS
HTTP (Hypertext Transfer Protocol) ist ein Datenübertragungsprotokoll. Es ist super, um Katzen-Memes anzusehen, ABER! Wenn jemand sich in dein WLAN-Netz einloggt (zum Beispiel im Café), kann er die Daten abfangen, die du an den Server sendest (gruselig, dein Passwort wird zu "ihrem Passwort").
HTTPS (Hypertext Transfer Protocol Secure) ist die HTTP-Version mit zusätzlicher Verschlüsselung. Die zwischen Client und Server übertragenen Daten werden durch SSL/TLS (Secure Sockets Layer / Transport Layer Security) geschützt. Angreifer können den Inhalt der „Pakete“ nicht mehr sehen, selbst wenn sie es schaffen, diese abzufangen.
2. Installation von Let's Encrypt und Certbot
Certbot ist ein Tool von den Entwicklern von Let's Encrypt, das es einfach macht, SSL-Zertifikate für deinen Webserver zu erhalten und einzurichten. Es ist schlau genug, um direkt mit Nginx oder Apache zu arbeiten und übernimmt die ganze mühsame Arbeit für uns. Fangen wir mit der Installation an.
Installation von Certbot
Stelle sicher, dass dein Server aktualisiert ist:
sudo apt-get update
sudo apt-get upgrade
Jetzt installieren wir Certbot und seine Plugins:
Für Nginx:
sudo apt-get install certbot python3-certbot-nginx
Für Apache:
sudo apt-get install certbot python3-certbot-apache
Certbot selbst ist einfach Python-Code, der von der Community aktiv gepflegt wird. Es integriert sich leicht mit den meisten Servern.
3. SSL-Zertifikat mit Certbot erhalten
Für Nginx
Certbot kann automatisch HTTPS für deine Website einrichten, wenn du Nginx verwendest. Gib ein:
sudo certbot --nginx
Certbot scannt deine aktuellen virtuellen Hosts (server
-Blöcke in der Konfiguration). Es fragt, für welche Domain du HTTPS einrichten möchtest. Stelle sicher, dass die Domain über DNS (z. B. mit einem A-Eintrag) auf deinen Server zeigt.
Beispielausgabe:
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Wähle deine Domain aus (z. B. 1).
Certbot konfiguriert automatisch die Nginx-Konfiguration und überprüft sie. Nach erfolgter Installation siehst du eine Nachricht wie:
Congratulations! Your certificate and chain have been saved ...
Jetzt ist deine Website über HTTPS verfügbar. Du kannst dies überprüfen, indem du https://example.com im Browser öffnest.
Für Apache
Wenn du Apache verwendest, wird der Befehl leicht abweichen:
sudo certbot --apache
Certbot scannt ebenfalls deine virtuellen Hosts (<VirtualHost>
-Blöcke) und bietet an, HTTPS für die ausgewählten Domains einzurichten. Wähle die gewünschten aus, und Certbot erledigt den Rest für dich.
Nach Abschluss des Prozesses siehst du erneut eine Glückwunschnachricht und kannst die Verfügbarkeit deiner Website über HTTPS überprüfen.
4. Automatische Zertifikatserneuerung
Die Zertifikate von Let's Encrypt sind nur 90 Tage gültig, daher müssen sie regelmäßig erneuert werden. Certbot kann dies automatisch erledigen, aber wir müssen sicherstellen, dass alles korrekt konfiguriert ist.
Überprüfung der Gültigkeitsdauer der Zertifikate
Du kannst prüfen, wann dein Zertifikat abläuft:
sudo certbot certificates
Die Ausgabe zeigt dir deine Domains und das Ablaufdatum ihrer Zertifikate.
Einrichten der automatischen Erneuerung
Während der Installation fügt Certbot automatisch einen Task in Cron oder Systemd Timer hinzu, um nach Updates zu suchen. Wenn du sicherstellen willst, dass alles funktioniert, füge einen Test-Task in Cron hinzu:
sudo crontab -e
Füge die folgende Zeile hinzu:
0 0 * * * certbot renew --quiet
Dieser Befehl überprüft und erneuert die Zertifikate täglich um Mitternacht. Der Parameter --quiet
deaktiviert unnötige Ausgaben.
Manuelles Erneuern
Wenn du die Zertifikate manuell erneuern möchtest (zum Beispiel für Tests), verwende:
sudo certbot renew
5. Aktivieren der automatischen Weiterleitung HTTP → HTTPS
Deine Website kann immer noch über HTTP erreichbar sein, aber das ist unsicher. Lass uns automatische Weiterleitungen aller Anfragen zu HTTPS einrichten.
Für Nginx
Certbot kann die Weiterleitung automatisch einrichten, wenn das Zertifikat ausgegeben wird. Falls du das zuvor nicht aktiviert hast, füge die Weiterleitung manuell in deine virtuelle Host-Konfigurationsdatei ein:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Starte Nginx neu, um die Änderungen anzuwenden:
sudo systemctl restart nginx
Für Apache
Certbot bietet auch an, Weiterleitungen automatisch zu aktivieren. Falls du diesen Schritt übersprungen hast, füge Folgendes in deine virtuelle Host-Datei ein:
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
Starte Apache neu:
sudo systemctl restart apache2
6. Fehler-Debugging
Wenn etwas schiefgeht, starte mit dem Überprüfen der Logs:
Für Nginx
sudo tail -f /var/log/nginx/error.log
Für Apache
sudo tail -f /var/log/apache2/error.log
Konfiguration testen
Überprüfe außerdem die Konfiguration des Webservers:
Für Nginx:
sudo nginx -t
Für Apache:
sudo apachectl configtest
HTTPS prüfen
Stelle sicher, dass deine Website über HTTPS erreichbar ist:
curl -I https://example.com
Du solltest den Status 200 OK
und die Zeile Strict-Transport-Security
sehen, was bedeutet, dass HTTPS funktioniert.
Jetzt bist du bereit, sichere und geschützte HTTPS-Websites zu erstellen. Deine Nutzer werden glücklich sein, Google auch, und du kannst beruhigt schlafen, da deine Daten vor den bösen Jungs im Internet geschützt sind.
GO TO FULL VERSION