Let's Encrypt auf einem Cloud Server mit certbot automatisieren

Jetzt für nur 1 Euro testen!
Habt Ihr große Hosting-Projekte mit vielen Ressourcen? Mit dem CloudServer (VPS) von hosting.de ist das kein Problem. Dank unserem umfangreichen Angebot an Hosting Tools genießt Ihr absolute Freiheit. Natürlich kann das Betriebssystem per Knopfdruck frei gewählt werden.
Jetzt Cloud Server buchen

Einleitung

Die Zertifizierungsstelle Let’s Encrypt bietet die Möglichkeit, TLS/SSL-Zertifikate kostenfrei und automatisiert für Server zu beziehen. Ein Nachteil von Let’s Encrypt ist die vergleichsweise kurze Gültigkeitsdauer der Zertifikate. Dieser Nachteil lässt sich durch die Verwendung einer Software ausgleichen, welche die Erneuerung der Zertifikate auf dem Server automatisch vornimmt. Eine hierfür geeignete Software ist “certbot”, das von der Electronic Frontier Foundation (EFF) herausgegeben wird. In diesem Artikel wird beispielhaft anhand des Apache Webservers gezeigt, wie cerbot auf einem hosting.de Cloud Server eingerichtet werden kann.

Als Alternative zu certbot existiert acme.sh, das ohne Python auskommt. Zur Installation von acme.sh existiert ein separater Artikel.

Voraussetzungen

  • Sie verfügen über einen hosting.de Cloud Server, welcher einen gültigen DNS-Eintrag, z.B. demo.mustermann-domain.de besitzt.
  • Das Betriebssystem des Servers ist ein aktuelles Debian oder Ubuntu.

Installation von Apache

Verbinden Sie sich bitte per SSH als Benutzer root auf den Server. Falls auf dem Server der Befehl sudo nicht zur Verfügung steht, installieren Sie diesen bitte mit den Befehlen:

apt update
apt install sudo

Installieren Sie Apache bitte mit den folgenden Befehlen, falls dieser noch nicht installiert ist:

sudo apt update
sudo apt install apache2

Damit der Server aus dem Internet erreichbar ist, müssen der Port 80 und 443 in der Firewall freigegeben sein.

Installation von certbot

Entfernen alter Versionen

Stellen Sie bitte durch Ausführung des folgenden Befehls:

sudo apt remove certbot

sicher, dass sich keine veraltete Version von certbot mehr auf dem System befindet.

Installation

Führen Sie bitte die folgenden Befehle aus um certbot auf Ihrem System zu installieren:

wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto

Variante 1

Nun gibt es zwei Varianten der Konfiguration. In der ersten Variante können Sie die Konfiguration von Apache durch certbot automatisch von certbot vornehmen lassen. In der zweiten Variante müssen Sie die Konfiguration des Webservers von Hand vornehmen. Führen Sie dazu bitte den folgenden Befehl aus:

sudo /usr/local/bin/certbot-auto --apache

Nach der Eingabe eines der beiden Befehle werden weitere Pakete der Distribution installiert:

...
0 aktualisiert, 53 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 74,6 MB an Archiven heruntergeladen werden.
Nach dieser Operation werden 229 MB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren? [J/n]

Bestätigen Sie hier bitte durch Eingabe von j.

Nach der Installation der Pakete werden Sie nach einer E-Mailadresse gefragt. Über diese E-Mailadresse werden Sie benachrichtigt, falls das Zertifikat nicht rechtzeitig erneuert wurde:

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

Geben Sie hier bitte eine E-Mailadresse ein, unter der Sie die Benachrichtigungen empfangen möchten.

Stimmen Sie bitte den Nutzerbedingungen von Let’s Encrypt durch Eingabe von A zu:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel:

Hiernach werden Sie gefragt, ob Sie einen Newsletter von Let’s Encrypt abonnieren möchten:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o:

Wir empfehlen hier die Option “N” zu wählen.

Nun werden Sie gefragt, für welche Domains Sie Zertifikate beantragen möchten. Geben Sie diese bitte durch Kommas getrennt ein:

No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated)  (Enter 'c' to cancel):

Beachten Sie, dass Sie auf diesem Server nur Zertifikate für Domains beantragen können, die auf die IP des Servers zeigen.

Wenn Sie die Zertifikate für die Domains beantragt haben, dann erscheint die Nachfrage, ob unverschlüsselte Anfragen an den Webserver auf eine verschlüsselte Verbindung umgeleitet werden sollen:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Hier empfehlen wir die Option 2 zu wählen und somit eine Weiterleitung einzurichten. Wenn in certbot kein Fehler aufgetreten ist, erscheint die Meldung “[…] Congratulations! Your certificate and chain have been saved at […]”.

Starten Sie bitte abschließend Apache einmal neu:

sudo systemctl restart apache2

Variante 2

In der zweiten Variante lädt certbot lediglich die nötigen Zertifikate herunter, konfiguriert Apache jedoch nicht. Die Konfiguration von Apache muss dann händisch vorgenommen werden. Geben Sie dazu bitte den folgenden Befehl ein:

sudo /usr/local/bin/certbot-auto certonly --apache

Die weiteren Schritte zur Einrichtung von certbot sind ähnlich wie bereits für die erste Variante beschrieben.

Automatisierung der Erneuerung der Zertifikate

Zur Automatisierung der Erneuerung der Zertifikate muss ein cron-Job angelegt werden. Ein entsprechender Eintrag in der Datei /etc/crontab kann mit Hilfe des folgenden Befehls vorgenommen werden:

echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew" | sudo tee -a /etc/crontab > /dev/null

Test

Um zu überprüfen, ob certbot korrekt funktioniert, rufen Sie bitte im Browser die Domain Ihres Servers auf, also z.B. https://demoserver.mustermann-domain.de. Erhalten Sie keine Warnmeldung wegen eines ungültigen Zertifikats in Ihrem Browser, so war die Installation des Zertifikats erfolgreich.

Zusätzlich können Sie Dienste, wie z.B. https://www.ssllabs.com/ verwenden um zu prüfen, ob die hinterlegten Zertifikate gültig sind.

Wie Let’s Encrypt hinter den Kulissen funktioniert

Let’s Encrypt nutzt einen automatisierten Prozess namens ACME, um zu überprüfen, ob du die Kontrolle über eine Domain hast, bevor ein Zertifikat ausgestellt wird. Dazu wird eine temporäre Challenge-Datei oder ein DNS-Eintrag erstellt, den die Let’s Encrypt-Server während der Validierung überprüfen. Sobald die Überprüfung erfolgreich war, wird das Zertifikat generiert und auf deinem System installiert. Da alles automatisiert ist, läuft die Verlängerung genauso ab, ohne dass Du manuell etwas machen musst. Das macht Let’s Encrypt sowohl für kleine Projekte als auch für produktionsreife Dienste so praktisch.

Warum automatische Verlängerung wichtig ist

Von Let’s Encrypt ausgestellte Zertifikate sind 90 Tage lang gültig, daher müssen Verlängerungen regelmäßig geplant werden, um Dienstunterbrechungen zu vermeiden. Kurze Gültigkeitsdauer erhöht die Sicherheit, da sie die Zeit begrenzt, in der ein kompromittiertes Zertifikat noch genutzt werden kann. Die automatische Verlängerung sorgt dafür, dass deine Website verschlüsselt bleibt, ohne dass du das Ablaufdatum manuell überprüfen musst. Die meisten Setups haben ein Verlängerungsskript oder einen System-Timer, und es ist eine gute Idee, zu überprüfen, ob es richtig läuft, vor allem nach Serveränderungen oder Updates.

Häufige Probleme bei der Zertifikatskonfiguration

Hier sind ein paar häufige Probleme, auf die Nutzer bei der Konfiguration von Let’s Encrypt stoßen:

  • Die Ports 80 oder 443 sind durch eine Firewall blockiert, was die Überprüfung verhindert.
  • Die Domain verweist auf die falsche IP-Adresse oder wurde noch nicht propagiert.
  • Ein anderer Dienst nutzt schon die benötigten Ports.
  • Die DNS-Validierung schlägt fehl, weil ein TXT-Eintrag falsch hinzugefügt oder nicht gespeichert wurde.

Wenn du dir dieser Probleme bewusst bist, kannst du Probleme schnell beheben, falls die Zertifikatsanforderung nicht wie erwartet abgeschlossen wird.

Wann Let’s Encrypt möglicherweise nicht ausreicht

Let’s Encrypt funktioniert gut für die meisten Webprojekte, aber es gibt Situationen, in denen ein kommerzielles Zertifikat immer noch die bessere Wahl ist. Wenn dein Unternehmen eine erweiterte Validierung braucht oder ein Zertifikat mit verifizierten Geschäftsdaten haben will, sind diese Funktionen bei Let’s Encrypt nicht verfügbar. Manche Unternehmensumgebungen bevorzugen auch langfristige Zertifikate, um interne Richtlinien einzuhalten. In diesen Fällen passt ein kostenpflichtiges Zertifikat vielleicht besser zu den Compliance- oder Dokumentationsanforderungen. Für allgemeines Hosting bleibt Let’s Encrypt aber eine zuverlässige und sichere Wahl.

Referenzen

Melde Dich gerne zu unserem Newsletter an



Vielen Dank für Deine Anmeldung zum hosting.de Newsletter!