Linux13. Juli 2026 14 Aufrufe

Certbot : installieren ein SSL Let's Encrypt auf VPS (Nginx/Apache)

Certbot : installieren ein SSL Let's Encrypt auf VPS (Nginx/Apache)

Certbot: ein SSL-Zertifikat von Let's Encrypt auf Ihrem VPS Linux (Nginx & Apache) installieren

Eine Website ohne HTTPS im 2026 ist ein durchgestrichenes Schloss im Browser, ein SEO-Nachteil und Besucher, die fliehen. Die gute Nachricht: Auf einem VPS dauert es weniger als fünf Minuten, ein gültiges SSL/TLS-Zertifikat zu erhalten, das von allen Browsern anerkannt wird und 100 % kostenlos ist, dank Certbot, dem offiziellen Client von Let's Encrypt. In diesem Leitfaden installieren wir Certbot auf Debian/Ubuntu, generieren ein Zertifikat für Nginx und Apache, konfigurieren die automatische Erneuerung und gehen die häufigsten Fehler durch, die wir im Support antreffen, einschließlich derjenigen, die in keiner offiziellen Dokumentation aufgeführt sind.

Let's Encrypt und Certbot: wie es funktioniert

Let's Encrypt ist eine gemeinnützige Zertifizierungsstelle (CA), die kostenlose SSL/TLS-Zertifikate über das ACME-Protokoll ausstellt. Certbot, entwickelt von der EFF, ist der Referenz-ACME-Client: Er kommuniziert mit Let's Encrypt, beweist, dass Sie Ihre Domain kontrollieren, ruft das Zertifikat ab und konfiguriert Ihren Webserver alles in einem Befehl.

Der Nachweis der Kontrolle erfolgt über eine „Herausforderung“ (challenge). Die häufigste, HTTP-01, besteht darin, eine temporäre Datei auf Port 80 Ihres Servers abzulegen: Wenn Let's Encrypt sie von außen lesen kann, wird die Domain validiert und das Zertifikat ausgestellt. Deshalb ist ein VPS mit einer dedizierten öffentlichen IP die ideale Umgebung, da Sie den Webserver, die Ports und das DNS von Ende zu Ende kontrollieren.

Bild

Besonderheit zu beachten: Die Zertifikate von Let's Encrypt haben nur eine Gültigkeit von 90 Tagen, im Gegensatz zu einem Jahr für kommerzielle Zertifikate. Das ist keine Einschränkung, sondern eine bewusste Sicherheitsentscheidung: Ein kompromittierter Schlüssel hat eine kurze Lebensdauer, und die Rotation zwingt zur Automatisierung. Mit der automatischen Erneuerung von Certbot müssen Sie nie wieder daran denken.

Voraussetzungen

Bevor Sie einen Befehl ausführen, überprüfen Sie diese vier Punkte 90 % der Ausstellungsfehler kommen daher:

  1. Ein VPS Linux unter Debian 12/13 oder Ubuntu 22.04/24.04 mit Root-Zugriff (oder sudo).
  2. Ein Domainname, dessen DNS A (und AAAA, wenn Sie IPv6 verwenden) auf die öffentliche IP des VPS zeigt und dessen Propagation abgeschlossen ist.
  3. Ein installierter Webserver, der bereits auf HTTP antwortet. Wenn dies nicht der Fall ist, folgen Sie zuerst unserem Leitfaden Nginx und PHP-FPM auf einem VPS installieren.
  4. Die Ports 80 und 443 sind in Ihrer Firewall geöffnet. Unter UFW: sudo ufw allow 'Nginx Full' (oder 'WWW Full' für Apache).

Sie sind auf einem Shared Hosting? Dieser Leitfaden betrifft VPS-Server. Bei einem cPanel-Hosting wird SSL in wenigen Klicks verwaltet: siehe wie man ein SSL-Zertifikat auf cPanel erstellt.

Schritt 1: Certbot installieren

Die von der EFF empfohlene Methode ist die Installation über snap, die eine immer aktuelle Version garantiert (das apt-Paket von Debian/Ubuntu hat manchmal mehrere Versionen Rückstand, was bei Änderungen des ACME-Protokolls problematisch sein kann):

sudo apt update && sudo apt install snapd -y
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Überprüfen Sie die Installation: certbot --version sollte certbot 5.x zurückgeben. Wenn Sie lieber bei den offiziellen Repositories bleiben möchten, funktioniert auch sudo apt install certbot python3-certbot-nginx (oder python3-certbot-apache), gehen Sie einfach von einer älteren Version aus.

Schritt 2: Zertifikat erhalten und installieren

Mit Nginx

sudo certbot --nginx -d your-domain.com -d www.your-domain.com

Das Plugin --nginx erledigt alles: Domainvalidierung, Ausstellung des Zertifikats, Änderung des server-Blocks Ihrer Konfiguration und Einrichtung der HTTP → HTTPS-Umleitung (antworten Sie „2“, wenn Certbot Sie dazu auffordert, oder fügen Sie --redirect zum Befehl hinzu, um die Frage zu vermeiden).

Bild

Mit Apache

sudo certbot --apache -d your-domain.com -d www.your-domain.com

Ohne Webserver (Standalone-Modus)

Für einen Mailserver, ein Panel oder jede Anwendung, die selbst das TLS verwaltet, kann Certbot einen eigenen temporären Webserver auf Port 80 starten:

sudo systemctl stop nginx   # Port 80 freigeben, falls erforderlich
sudo certbot certonly --standalone -d your-domain.com
sudo systemctl start nginx

In jedem Fall befinden sich Ihre Dateien in /etc/letsencrypt/live/your-domain.com/: fullchain.pem (Zertifikat + Zwischenzertifikat, das ist fast immer das, was Ihre Anwendungen erwarten) und privkey.pem (privater Schlüssel, der niemals offengelegt werden sollte).

Schritt 3: Überprüfen der automatischen Erneuerung

Dies ist der Schritt, den jeder überspringt, und die Hauptursache für Websites, die drei Monate später „Zertifikat abgelaufen“ anzeigen. Die Snap-Installation erstellt einen systemd-Timer, der certbot renew zweimal täglich ausführt; jedes Zertifikat wird erneuert, sobald es in sein 30-tägiges Gültigkeitsfenster eintritt.


Bild

Überprüfen Sie, ob der Timer aktiv ist, und simulieren Sie dann eine vollständige Erneuerung, ohne Ihr Kontingent zu verbrauchen:

systemctl list-timers | grep certbot
sudo certbot renew --dry-run

Wenn der Dry-Run mit Congratulations, all simulated renewals succeeded endet, können Sie Ihr Zertifikat für immer vergessen. Admin-Tipp: Wenn ein Dienst nach der Erneuerung neu geladen werden muss (Nginx lädt sich selbst über das Plugin neu, aber nicht ein Mailserver zum Beispiel), verwenden Sie einen Deploy-Hook:

sudo certbot renew --deploy-hook "systemctl reload postfix"

Weiterführend: Wildcard-Zertifikat (*.your-domain.com)

Ein wildcard-Zertifikat deckt alle Subdomains auf einmal ab, was praktisch ist, wenn Sie app., api. und blog. auf demselben VPS hosten. Let's Encrypt erlaubt dies, jedoch nur über die DNS-01-Herausforderung: Anstelle einer Datei auf Port 80 beweisen Sie die Kontrolle über die Domain, indem Sie einen TXT-Eintrag _acme-challenge erstellen:

sudo certbot certonly --manual --preferred-challenges dns \
  -d "your-domain.com" -d "*.your-domain.com"

Der --manual-Modus erfordert, dass Sie den TXT-Eintrag bei jeder Erneuerung neu erstellen: In der Produktion verwenden Sie besser ein DNS-Plugin (certbot-dns-cloudflare, certbot-dns-ovh…), das die Erstellung des Eintrags über die API Ihrer DNS-Zone automatisiert.

Die 5 häufigsten Fehler (und ihre Lösungen)

1. „Connection refused“ oder „Timeout during connect“ der Port 80 ist geschlossen oder gefiltert. Überprüfen Sie sudo ufw status und vergessen Sie nicht, dass HTTP-01 den offenen Port 80 erfordert auch wenn Ihre Website nur HTTPS bereitstellt.

2. „DNS problem: NXDOMAIN“ der A-Eintrag existiert noch nicht oder hat die Propagation noch nicht abgeschlossen. Testen Sie mit dig +short your-domain.com: Solange die IP des VPS nicht angezeigt wird, ist es sinnlos, Certbot erneut zu starten.

3. Die Falle des AAAA-Eintrags ein Klassiker, den wir oft im Support sehen: Let's Encrypt bevorzugt IPv6, wenn ein AAAA-Eintrag existiert. Wenn dieser auf eine IP zeigt, auf der Ihr Webserver nicht hört, schlägt die Validierung fehl, obwohl die Website in IPv4 funktioniert. Korrigieren Sie den AAAA-Eintrag oder konfigurieren Sie Nginx, um auf [::]:80 zu hören.

4. „too many certificates already issued“ Sie haben das Rate-Limit von Let's Encrypt erreicht (50 Zertifikate pro Domain und Woche, und vor allem 5 exakte Duplikate pro Woche). Dies ist häufig der Fall, wenn Sie den Befehl in einer Schleife erneut ausführen, um „zu testen“. Verwenden Sie immer --dry-run für Ihre Tests: Der Staging-Server hat diese Limits nicht.

5. Die Erneuerung schlägt fehl, obwohl die Ausstellung funktioniert hat typischerweise haben Sie die Nginx-Konfiguration zwischenzeitlich geändert (Löschen des Serverblocks, Port 80 woanders umgeleitet, Firewall verschärft). Der --dry-run nach jeder größeren Konfigurationsänderung wird Ihnen die böse Überraschung 60 Tage später ersparen.

Best Practices für ein solides HTTPS

Das Zertifikat ist nur die Hälfte der Arbeit. Für eine ordentliche TLS-Konfiguration: Erzwingen Sie die 301-Umleitung von HTTP nach HTTPS (Certbot schlägt dies vor), aktivieren Sie HSTS (add_header Strict-Transport-Security "max-age=31536000" always; in Nginx), damit die Browser niemals wieder HTTP versuchen, und überprüfen Sie Ihre Note auf SSL Labs, zielen Sie auf A oder A+. Die von Certbot generierten TLS-Einstellungen (options-ssl-nginx.conf) folgen den Mozilla-Empfehlungen und erzielen in den meisten Fällen bereits ein A.

Schließlich schützt HTTPS nur den Transport: Denken Sie auch daran, den SSH-Zugang, die Firewall und Ihre Anwendungen zu sichern. Unsere Leitfäden phpMyAdmin mit Nginx sichern und Laravel auf einem VPS bereitstellen zeigen, wie man SSL sauber in einen vollständigen Stack integriert, und alle unsere Tutorials sind in der Linux-Dokumentation verfügbar.

FAQ – Certbot und Let's Encrypt

Ist Certbot wirklich kostenlos? Ja, völlig. Let's Encrypt wird durch Spenden und Sponsoren (EFF, Mozilla…) finanziert. Keine Begrenzung der Anzahl der Domains, keine versteckten Kosten.

Ist ein Let's Encrypt-Zertifikat genauso „sicher“ wie ein kostenpflichtiges Zertifikat? Die Verschlüsselung ist identisch (gleicher TLS, gleiche Algorithmen). Kostenpflichtige Zertifikate unterscheiden sich nur durch die Validierung der Organisation (OV/EV) und die vertragliche Versicherung, nicht durch technische Sicherheit.

Warum nur 90 Tage Gültigkeit? Bewusste Sicherheitsentscheidung: Die Lebensdauer eines kompromittierten Schlüssels begrenzen und die Automatisierung der Erneuerung erzwingen. Mit dem Timer von Certbot ist das transparent.

Kann ich Certbot auf einem Windows VPS verwenden? Certbot ist für Linux konzipiert. Unter Windows Server (IIS) verwenden Sie einen ACME-Client wie win-acme oder platzieren Sie das TLS hinter einem Linux-Reverse-Proxy.

Wie lange dauert die vollständige Installation? Auf einem sauberen VPS mit bereits propagiertem DNS: weniger als 5 Minuten, einschließlich der Certbot-Installation.

Fazit

Mit Certbot ist HTTPS keine Ausgabe mehr und keine vierteljährliche Pflicht: ein Befehl zur Ausstellung, ein Timer zur Erneuerung und ein --dry-run, um ruhig schlafen zu können. Die einzige echte Bedingung ist, von einer soliden Basis auszugehen ein Server mit dedizierter IP, Root-Zugriff und Ports, die Sie kontrollieren.

Wenn Sie noch keinen Server haben, werden unsere VPS Linux NVMe in weniger als 60 Sekunden mit vorinstalliertem Debian oder Ubuntu, einer dedizierten IP und integrierter DDoS-Schutz geliefert alles, was Sie brauchen, um diesen Leitfaden von A bis Z durchzuführen.