GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwalten Sie SSL/TLS-Zertifikate von Lets Encrypt mit certbot

Lass uns verschlüsseln 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 häufig zum Verschlüsseln der Kommunikation aus Sicherheits- und Datenschutzgründen verwendet werden, wobei HTTPS der bemerkenswerteste Anwendungsfall ist. Let’s Encrypt nutzt das ACME-Protokoll (Automatic Certificate Management Environment), um Zertifikate auszustellen, zu widerrufen und zu erneuern. Certbot ist ein kostenloses Open-Source-Dienstprogramm, das hauptsächlich zum Verwalten von SSL/TLS-Zertifikaten von Let's Encrypt verwendet wird Zertifizierungsstelle. Es ist für die meisten UNIX- und UNIX-ähnlichen Betriebssysteme verfügbar, einschließlich GNU/Linux, FreeBSD, OpenBSD und OS X. Dieses Handbuch bietet eine plattformunabhängige Einführung in die Verwendung von certbot.

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

Anforderungen

  • Ein registrierter Domänenname mit einem A-Eintrag, der auf Ihre IPv4-Adresse verweist. `www.example.com` wird als Beispiel verwendet.
  • Zugriff auf eine privilegierte Shell.

Allgemeine Konzepte

Betriebsmodi

Die Verwendung von certbot zum Aktivieren 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 beides automatisch mit dem Unterbefehl run ausführen. Die Unterbefehle certonly und install sind für die Authentifizierungs- bzw. Installationsschritte.

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

Herausforderungen

Um ein Let's Encrypt-Zertifikat zu erhalten, müssen Sie eine Domänenvalidierungsherausforderung lösen, die von einem ACME-Server (Automatic Certificate Management Environment) ausgegeben wird. Diese Herausforderung bestätigt Ihre Inhaberschaft der Domains, für die Sie versuchen, ein Zertifikat zu erhalten. Es gibt verschiedene Challenge-Typen, der am häufigsten verwendete ist HTTP-01. Wie der Name schon sagt, verwendet es das HTTP-Protokoll. Obwohl HTTP-Server so konfiguriert werden können, dass sie jeden TCP-Port verwenden, funktioniert diese Abfrage aufgrund von Sicherheitsmaßnahmen nur auf Port 80. DNS-01 ist ein weiterer, weniger beliebter Herausforderungstyp, der auf der DNS-Auflösung basiert. Beachten Sie, dass Platzhalterzertifikate nicht über die HTTP-01-Abfrage erhältlich sind. Dieser Leitfaden konzentriert sich zunächst auf HTTP-01.

Plugins

Certbot ist auf Plugins angewiesen, 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 darauf ausgelegt sind, Zertifikate (d. h. die Webserverkonfiguration) automatisch zu erhalten und zu installieren. Andere Plugins umfassen mehrere herstellerspezifische DNS-Plugins für die DNS-01-Authentifizierung. Die meisten Certbot-Plug-ins werden separat installiert, mit Ausnahme der integrierten Webroot- und Standalone-Plug-ins.

Installieren von Certbot

Die meisten Linux-Distributionen bieten certbot in ihren offiziellen Repositories an. Nachfolgend 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 höher:

pkg_add certbot

MacOS (Homebrew erforderlich):

brew install letsencrypt

Sonstiges:

Wenn für Ihre Plattform kein certbot-Paket 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.

Certbot verwenden

Auflistungszertifikate

Um eine Liste der von certbot auf Ihrem Server verwalteten Zertifikate anzuzeigen, führen Sie den folgenden Befehl aus:

certbot certificates

Erhalt eines Zertifikats für die manuelle Konfiguration

Wenn Sie Ihren Webserver manuell konfigurieren, können Sie ein Zertifikat auf zwei Arten erhalten. Entweder indem Sie certbot Zugriff auf das Web-Root-Verzeichnis Ihres Servers gewähren (d. h. das Webroot-Plugin) oder indem Sie einen temporären eigenständigen Webserver auf Port 80 bereitstellen (d. h. das eigenständige Plugin). Letzteres Plugin ist dann sinnvoll, wenn eine Integration mit Ihrem bestehenden Webserver nicht möglich oder nicht erwünscht ist. Seien Sie aus Gründen der Bequemlichkeit und einfacheren Verlängerungen konsistent mit dem verwendeten Plugin.

Einen vorhandenen Webserver verwenden

Um Ihren vorhandenen Webserver zu verwenden, vergewissern Sie sich, dass er ausgeführt wird und auf Port 80 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 [email protected] -d www.example.com

Mit dem eigenständigen Webserver

Um den Standalone-Server zu verwenden, stellen Sie zunächst die Verfügbarkeit von Port 80 sicher. Sie können prüfen, ob Prozesse an diesen Port gebunden sind, indem Sie Folgendes verwenden:

ss -lntp 'sport = 80'

Stoppen Sie bei Bedarf den betreffenden Dienst/Prozess, bevor Sie fortfahren. Geben Sie dann den Befehl ein:

certbot certonly --standalone

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

Interaktive HTTPS-Installation

Wie bereits erwähnt, kann certbot den gesamten HTTPS-Einrichtungsprozess automatisieren, einschließlich der Webserverkonfiguration. 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 für Ihren Webserver spezifische certbot-Plugin und führen Sie dann „certbot run --PLUGIN_NAME“ aus. Wir demonstrieren den gesamten Prozess für Apache auf einem Debian 10-System. Der Prozess für Nginx ist ähnlich.

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

Angenommen, Ihr Webserver ist bereits für Ihre Domainnamen konfiguriert, analysiert certbot die vorhandene Konfiguration und fordert Sie auf, auszuwählen, für welche Domainnamen HTTPS aktiviert werden soll. Wenn Ihr Webserver nicht konfiguriert ist oder certbot Ihren Domainnamen nicht erkennt, geben Sie Ihren 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 der HTTP-Datenverkehr an HTTPS umgeleitet werden soll. Sofern Sie keine triftigen Gründe dagegen haben, sollten Sie die Umleitung zu 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
erfolgreich aktiviert

Erneuern von Zertifikaten

Manuelle Verlängerung

Um Ihre Zertifikate mit certbot zu erneuern, können Sie den Unterbefehl renew verwenden. Während der Verlängerung verwendet certbot dieselben Plugins und Optionen, die für die ursprüngliche Ausstellung verwendet wurden. Zertifikate werden nur erneuert, wenn sie in weniger als 30 Tagen ablaufen, daher kann dieser Unterbefehl beliebig oft verwendet werden, da er keine Aktion ausführt, wenn die Zertifikate nicht kurz vor ihrem Ablaufdatum stehen. Der Befehl lautet einfach:

certbot renew

Wenn das eigenständige Plugin zum Ausstellen eines Zertifikats verwendet wurde, müssen Sie Ihren Webserver stoppen, damit die Erneuerung erfolgreich ist. Sie können dies mit Hooks erreichen. Wenn auf dem System beispielsweise Apache ausgeführt wird, 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 systemd-Timer oder Cron-Jobs. Sie können nach systemd-Timern suchen mit:

systemctl list-timers

Und für Cron-Jobs mit:

ls /etc/cron*

Wenn das Webroot-Plugin für die Ausstellung verwendet wurde, sollten automatische Verlängerungen erfolgreich sein, solange Ihr Webserver läuft. Mit dem eigenständigen Plugin schlägt jedoch der standardmäßige Befehl zur automatischen Erneuerung fehl, falls ein Webserver ausgeführt wird, da certbot nicht in der Lage ist, eine Verbindung zu Port 80 herzustellen. Daher ist eine Änderung durch das Hinzufügen von Hooks, wie oben gezeigt, erforderlich.

Widerrufen von Zertifikaten

Das Widerrufen eines Zertifikats kann durch 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 dem Ausführen des Unterbefehls revoke fragt certbot, ob Zertifikatsdateien gelöscht werden sollen. Wenn Sie sie nicht löschen, wird das widerrufene Zertifikat bei der nächsten Verlängerung erneuert. Dem Unterbefehl revoke können mehrere selbsterklärende Optionen übergeben werden:

  • --delete-after-revoke (fragt den Benutzer standardmäßig nach einer Auswahl)
  • --no-delete-after-revoke (fragt den Benutzer standardmäßig nach einer Auswahl)
  • --Grund [nicht angegeben, Schlüsselkompromittierung, Zugehörigkeit geändert, ersetzt, Betriebseinstellung] (Standard:nicht angegeben)

Wildcard-Zertifikate

Ein einzelnes Wildcard-Zertifikat kann verwendet werden, um mehrere Subdomains zu identifizieren, als Alternative zu separaten regulären Zertifikaten. Um ein Wildcard-Zertifikat zu erhalten, muss die DNS-01-Challenge verwendet werden. Während mehrere herstellerspezifische Plugins zur Automatisierung des ACME-Authentifizierungsprozesses verfügbar sind, erläutern wir den manuellen, herstellerneutralen Prozess. Der Zugriff auf die Nameserver für Ihre Domain ist erforderlich.

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 bereitgestellt werden sollte. Dieser TXT-Eintrag dient als 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 Eintrag in Ihrem DNS-Kontrollfeld erstellen, bevor Sie fortfahren. Nachdem der Datensatz erstellt wurde, warten Sie einige Minuten, bevor Sie die Eingabetaste drücken, wodurch der ACME-Server veranlasst wird, ihn zu überprüfen. In einigen Fällen kann eine längere Wartezeit erforderlich sein, damit der neue Datensatz ordnungsgemäß weitergegeben wird 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

  • Offizielles Certbot-Github-Repository
  • Automatic Certificate Management Environment (ACME) RFC 8555
  • EFF Certbot-Dokumentation
  • Certbot(1) Manpage

Linux
  1. So sichern Sie Ihre Linux-E-Mail-Dienste mit SSL/TLS

  2. So sichern Sie ein cPanel-fähiges Konto mit einem SSL-Zertifikat von Lets Encrypt

  3. Sichern von ISPConfig 3.1 mit einem kostenlosen SSL-Zertifikat von Lets Encrypt

  4. So sichern Sie den Plesk-Hostnamen auf Port 8443 mit SSL-Zertifikat

  5. So sichern Sie Verbindungen mit SSL/TLS-Zertifikaten

So installieren Sie Let’s Encrypt SSL mit LEMP auf AlmaLinux 8

So erneuern Sie SSL-Zertifikate von Let’s Encrypt automatisch

So installieren Sie Let’s Encrypt SSL mit Apache unter CentOS 7

So sichern Sie Apache mit Let’s Encrypt SSL-Zertifikat auf CentOS 8

So überwachen Sie SSL/TLS-Zertifikate mit Checkmk

So sichern Sie Nginx mit dem Let’s Encrypt SSL-Zertifikat