ACLClouds
ACLClouds

Kostenloses HTTPS-Zertifikat auf VPS mit certbot

certbot installieren, ein Let’s-Encrypt-Zertifikat für Ihre Domain holen und prüfen, dass die automatische Erneuerung läuft.

Let’s Encrypt stellt TLS-Zertifikate kostenlos aus, gültig 90 Tage. certbot automatisiert Antrag und Erneuerung. Zwei Bedingungen: Die Domain muss schon auf Ihren VPS zeigen, und die Ports 80 und 443 müssen aus dem Internet erreichbar sein.

  • Let’s Encrypt stellt kostenlose Zertifikate mit 90 Tagen Gültigkeit aus, die certbot selbst erneuert.
  • Die Domain muss schon auf den VPS zeigen, und die Ports 80 und 443 müssen offen sein.
  • Testen Sie die Erneuerung mit --dry-run direkt nach der Installation.

Den Server vorbereiten

certbot braucht einen Namen, der auf den VPS auflöst (siehe den Artikel zu A-Einträgen), und einen Webserver, der auf Port 80 lauscht. Auf Debian oder Ubuntu installieren Sie Nginx und certbot mit dem Plugin.

  • sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginx
  • sudo ufw allow 'Nginx Full', falls die Firewall UFW aktiv ist (sonst diese Zeile auslassen).
  • Prüfen Sie, ob die Seite per HTTP antwortet, bevor Sie weitermachen: curl -I http://example.com.

Das Zertifikat anfordern

Ein einziger Befehl konfiguriert Nginx und lädt das Zertifikat herunter. Danach bietet certbot an, HTTP auf HTTPS umzuleiten: Bestätigen Sie, außer es spricht ein bestimmter Grund dagegen.

  • sudo certbot --nginx -d example.com -d www.example.com
  • Die Dateien liegen in /etc/letsencrypt/live/example.com/: fullchain.pem und privkey.pem.
  • Konfiguration testen, dann neu laden: sudo nginx -t && sudo systemctl reload nginx.

Die Erneuerung prüfen

Ein Zertifikat läuft nach 90 Tagen ab. Die Pakete für Debian und Ubuntu installieren einen systemd-Timer, der zweimal täglich versucht zu erneuern. Sie müssen nur prüfen, dass er läuft.

  • systemctl list-timers | grep certbot: der Timer muss seinen nächsten Lauf anzeigen.
  • sudo certbot renew --dry-run: simuliert eine Erneuerung, ohne die Zertifikate zu ändern.
  • sudo certbot certificates: zeigt das Ablaufdatum jedes Zertifikats.

Häufig gestellte Fragen

Warum scheitert der Antrag mit „Timeout during connect“?

Der Let’s-Encrypt-Server erreicht Port 80 nicht: Das DNS zeigt noch nicht auf den VPS, oder die Firewall blockt die Verbindung. Prüfen Sie dig und danach sudo ufw status.

Brauche ich ein Zertifikat pro Subdomain?

Nein. Ein Zertifikat deckt mehrere Namen ab. Fügen Sie für jeden weiteren Namen ein -d hinzu, etwa -d example.com -d www.example.com, und starten Sie den Befehl erneut.

Gibt es ein Zertifikat für einen Dienst, der kein HTTP spricht?

Ja, über die DNS-Validierung mit einem temporären TXT-Eintrag. Die Methode hängt von Ihrem DNS-Anbieter ab: Das passende certbot-Plugin muss installiert sein.