Wie man Let’s Encrypt SSL/TLS-Zertifikate mit Certbot erstellt und verwaltet

Let’s Encrypt ist eine automatisierte und offene Zertifizierungsstelle (CA), die von der Internet Security Research Group (ISRG) betrieben und von der Electronic Frontier Foundation (EFF), der Mozilla Foundation und anderen gegründet wurde. Es bietet kostenlose SSL/TLS-Zertifikate, die üblicherweise zur Verschlüsselung der Kommunikation zu Sicherheits- und Datenschutzzwecken verwendet werden, wobei der bemerkenswerteste Anwendungsfall HTTPS ist. Let’s Encrypt stützt sich auf das ACME-Protokoll (Automatic Certificate Management Environment), um Zertifikate auszustellen, zu widerrufen und zu erneuern. Certbot ist ein kostenloses und quelloffenes Dienstprogramm, das hauptsächlich für die Verwaltung von SSL/TLS-Zertifikaten der Zertifizierungsstelle Let’s Encrypt verwendet wird. Es ist für die meisten UNIX- und UNIX-ähnlichen Betriebssysteme verfügbar, einschließlich GNU/Linux, FreeBSD, OpenBSD und OS X. Dieser Leitfaden bietet eine plattformunabhängige Einführung in die Verwendung von Certbot.

HINWEIS: Da certbot noch in Arbeit ist, können sich einige in diesem Handbuch beschriebene Funktionen oder Verhaltensweisen in älteren oder zukünftigen Versionen unterscheiden.

Anforderungen

  • Ein registrierter Domänenname mit einem A-Eintrag, der auf Ihre IPv4-Adresse verweist. Als Beispiel wird `www.example.com` verwendet.
  • Zugang zu einer privilegierten Shell.

Allgemeine Konzepte

Betriebsarten

Die Verwendung von certbot zur Aktivierung von HTTPS kann in zwei Teile unterteilt werden: Authentifizierung und Installation. Die erste erfordert das Lösen einer Herausforderung und das Speichern des Zertifikats und anderer Dateien. Der Installationsschritt umfasst die Konfiguration und Sicherung des Webservers. Certbot kann mit dem Unterbefehl run automatisch beides ausführen. Die Unterbefehle certonly und install sind für die Authentifizierungs- bzw. Installationsschritte vorgesehen.

Certbot enthält auch Funktionen zur Erneuerung und zum Widerruf von Zertifikaten.

Herausforderungen

Der Erhalt eines Let’s Encrypt-Zertifikats umfasst die Lösung einer Domain-Validierungsaufgabe, die von einem ACME-Server (Automatic Certificate Management Environment) ausgestellt wurde. Mit dieser Prüfung wird Ihr Eigentum an der/den Domain(s), für die Sie ein Zertifikat erhalten möchten, überprüft. Es gibt verschiedene Challenge-Typen, der am häufigsten verwendete ist HTTP-01. Wie der Name schon sagt, verwendet es das HTTP-Protokoll. Während HTTP-Server für die Verwendung eines beliebigen TCP-Ports konfiguriert werden können, funktioniert diese Herausforderung aufgrund von Sicherheitsmaßnahmen nur auf Port 80. DNS-01 ist ein weiterer, weniger beliebter Challenge-Typ, der auf der DNS-Auflösung basiert. Beachten Sie, dass Wildcard-Zertifikate nicht über die HTTP-01-Herausforderung erhältlich sind. Dieser Leitfaden wird sich zunächst auf HTTP-01 konzentrieren.

Plugins

Certbot verlässt sich auf Plugins, um die Authentifizierung und Installation durchzuführen. Plugins wie Webroot und Standalone führen nur die Authentifizierung durch, während andere wie die Apache- und Nginx-Plugins so konzipiert sind, dass sie automatisch Zertifikate erhalten und installieren (d.h. Webserver-Konfiguration). Andere Plugins umfassen mehrere herstellerspezifische DNS-Plugins für die DNS-01-Authentifizierung. Die meisten Certbot-Plugins werden separat installiert, mit Ausnahme der Webroot- und Standalone-Plugins, die integriert sind.

Installieren von Certbot

Die meisten Linux-Distributionen bieten Certbot in ihren offiziellen Repositories an. Unten finden Sie Installationsanweisungen für weit verbreitete Plattformen.

Debian und Ubuntu:

apt update
apt install -y certbot

CentOS 7:

yum install -y certbot

Fedora und CentOS 8:

dnf install -y certbot

Arch Linux:

pacman -Sy certbot

FreeBSD:

pkg install py36-certbot

OpenBSD 6.0 und später:

pkg_add certbot

MacOS (Brew erforderlich):

brew install letsencrypt

Andere:

Wenn kein Certbot-Paket für Ihre Plattform verfügbar ist, können Sie das offizielle certbot-auto-Wrapper-Skript verwenden, um certbot automatisch auf Ihrem System zu installieren. Es kann hier heruntergeladen werden.

Verwendung von Certbot

Auflistung von Zertifikaten

Um eine Liste der von certbot verwalteten Zertifikate auf Ihrem Server anzuzeigen, geben Sie den Befehl ein:

certbot certificates

Erhalt eines Zertifikats für die manuelle Konfiguration

Wenn Sie sich für eine manuelle Konfiguration Ihres Webservers entscheiden, kann der Erhalt eines Zertifikats auf zwei Arten erfolgen. Entweder indem Sie certbot Zugriff auf das Webroot-Verzeichnis Ihres Servers geben (d.h. das Webroot-Plugin) oder indem Sie einen temporären eigenständigen Webserver auf Port 80 einsetzen (d.h. das eigenständige Plugin). Letzteres Plugin ist in Fällen nützlich, in denen eine Integration mit Ihrem bestehenden Webserver nicht möglich oder nicht gewünscht ist. Aus Gründen der Bequemlichkeit und einfacheren Erneuerung sollten Sie mit dem verwendeten Plugin übereinstimmen.

Verwendung eines vorhandenen Webservers

Um Ihren bestehenden Webserver zu verwenden, stellen Sie sicher, dass er auf Port 80 läuft und lauscht, bevor Sie den folgenden Befehl ausführen

certbot certonly --webroot

Sie werden aufgefordert, neben anderen Informationen Ihren Domainnamen und den Pfad zu Ihrem Webroot einzugeben, der auf den meisten Linux-Systemen standardmäßig `/var/www/html/` lautet. Alternativ können Sie die erforderlichen Informationen als Befehlsargumente angeben. Zum Beispiel:

certbot certonly --webroot --webroot-path /var/www/html --agree-tos -m your_email@example.com -d www.example.com

Verwendung des eigenständigen Web-Servers

Um den eigenständigen Server zu verwenden, stellen Sie zunächst die Verfügbarkeit von Port 80 sicher. Sie können auf alle Prozesse prüfen, die an diesen Port gebunden sind:

ss -lntp 'sport = 80'

Falls erforderlich, stoppen Sie den beanstandeten Dienst/Prozess, bevor Sie fortfahren. Dann geben Sie den Befehl:

certbot certonly --standalone

Sobald das Zertifikat ausgestellt ist, müssen Sie Ihren Webserver manuell konfigurieren. Die entsprechenden Dateien finden Sie in /etc/letsencrypt/live/your_domain.

Interaktive HTTPS-Installation

Wie bereits erwähnt, kann certbot den gesamten HTTPS-Einrichtungsprozess, einschließlich der Webserver-Konfiguration, automatisieren. Plugins sind sowohl für Apache als auch für Nginx verfügbar und müssen möglicherweise als separates Paket installiert werden. Installieren Sie das certbot-Plugin speziell für Ihren Webserver und führen Sie dann `certbot run –PLUGIN_NAME` aus. Wir werden den gesamten Prozess für Apache auf einem Debian-10-System demonstrieren. Der Prozess für Nginx ist ähnlich.

apt install -y python-certbot-apache
certbot run --apache

Angenommen, Ihr Webserver ist bereits für Ihre(n) Domainnamen konfiguriert, analysiert certbot die bestehende Konfiguration und fordert Sie auf, zu wählen, für welche(n) Domainnamen HTTPS aktiviert werden soll. Wenn Ihr Webserver nicht konfiguriert ist oder wenn certbot Ihre(n) Domainnamen nicht erkennt, geben Sie Ihre(n) Domainnamen einfach manuell ein, wenn Sie dazu aufgefordert werden. Zum Beispiel:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

Certbot erstellt eine neue Apache-Konfigurationsdatei für Ihren neuen virtuellen HTTPS-Host und fragt, ob HTTP-Verkehr auf HTTPS umgeleitet werden soll. Sofern Sie keine triftigen Gründe dagegen haben, sollten Sie die Umleitung auf HTTPS aktivieren.

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): 2
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/www.example.com.conf to ssl vhost in /etc/apache2/sites-available/www.example.com-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.example.com

Erneuerung von Zertifikaten

Manuelle Erneuerung

Um Ihre Zertifikate mit certbot zu erneuern, können Sie den Unterbefehl renew verwenden. Während der Erneuerung verwendet certbot dieselben Plugins und Optionen wie bei der ursprünglichen Ausgabe. Zertifikate werden nur dann erneuert, wenn sie in weniger als 30 Tagen ablaufen, so dass dieser Unterbefehl so oft wie gewünscht verwendet werden kann, da er nichts unternimmt, wenn die Zertifikate nicht in der Nähe ihres Ablaufdatums sind. Der Befehl ist einfach:

certbot renew

Wenn das eigenständige Plugin zur Ausstellung eines Zertifikats verwendet wurde, müssen Sie Ihren Webserver stoppen, damit die Erneuerung gelingen kann. Das können Sie mit Hilfe von Haken erreichen. Wenn das System beispielsweise Apache ausführt, lautet der Befehl:

certbot renew --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

Automatische Verlängerung

Viele Distributionen haben standardmäßig automatische Verlängerungen aktiviert, entweder über Systemzeitgeber oder Cron-Jobs. Mit können Sie nach Systemzeitgebern suchen:

systemctl list-timers

Und für Cron-Jobs verwenden:

ls /etc/cron*

Wenn das Webroot-Plugin für die Ausgabe verwendet wurde, sollten automatische Verlängerungen erfolgreich sein, solange Ihr Webserver läuft. Mit dem eigenständigen Plugin wird jedoch der standardmäßige automatische Erneuerungsbefehl fehlschlagen, wenn ein Webserver läuft, da certbot nicht in der Lage ist, sich an Port 80 zu binden. Es ist daher erforderlich, sie durch Hinzufügen von Haken, wie oben gezeigt, zu modifizieren.

Widerruf von Zertifikaten

Das Sperren eines Zertifikats kann durch die Angabe des Zertifikatspfads oder -namens erreicht werden:

certbot revoke --cert-name cert_name
(OR)
certbot revoke --cert-path /path/to/cert.pem

Zum Beispiel:

certbot revoke --cert-name www.example.net

Nach Ausführung des Unterbefehls „Widerruf“ fragt certbot, ob Zertifikatsdateien gelöscht werden sollen. Wenn Sie diese nicht löschen, wird das widerrufene Zertifikat beim nächsten Erneuerungsvorgang erneuert. Mehrere selbsterklärende Optionen können an den Unterbefehl „Widerruf“ übergeben werden:

  • -Löschen-nach-Widerruf (fordert den Benutzer standardmäßig zur Auswahl auf)
  • –no-delete-after-revoke (fordert den Benutzer standardmäßig zur Auswahl auf)
  • -Grund [unbestimmt,Schlüsselkompromiss,Zugehörigkeit geändert,ersetzt,Einstellung der Tätigkeit] (Voreinstellung: nicht spezifiziert)

Wildcard-Zertifikate

Ein einzelnes Wildcard-Zertifikat kann zur Identifizierung mehrerer Subdomains verwendet werden, als Alternative zu separaten regulären Zertifikaten. Um ein Wildcard-Zertifikat zu erhalten, muss die DNS-01-Herausforderung verwendet werden. Während mehrere herstellerspezifische Plugins zur Verfügung stehen, die den ACME-Authentifizierungsprozess automatisieren, erläutern wir den manuellen, herstellerunabhängigen Prozess. Sie benötigen Zugang zu den Nameservern für Ihre Domain.

Verwenden Sie den folgenden Befehl, um ein Wildcard-Zertifikat anzufordern:

certbot certonly --manual --preferred-challenges dns-01 -d *.example.net

Certbot zeigt einen Wert an, der in einem DNS-TXT-Eintrag eingesetzt werden sollte. Dieser TXT-Datensatz dient als die notwendige Eigentumsvalidierung.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.net with the following value:
y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Sie müssen den angegebenen Datensatz in Ihrem DNS-Bedienfeld erstellen, bevor Sie fortfahren können. Sobald der Datensatz erstellt ist, warten Sie einige Minuten, bevor Sie die Eingabetaste drücken, wodurch der ACME-Server zur Überprüfung des Datensatzes veranlasst wird. In einigen Fällen kann eine längere Wartezeit erforderlich sein, bis sich der neue Datensatz richtig verbreitet und zugänglich ist. Bei Erfolg werden das Zertifikat, die Kette und der private Schlüssel unter /etc/letsencrypt/live/example.com/ gespeichert.

Referenzen und zusätzliche Informationen

Das könnte dich auch interessieren …