Der Autor hatCode.org ausgewählt, um eine Spende im Rahmen desWrite for DOnations-Programms zu erhalten.
Einführung
Let’s Encrypt ist eine Zertifizierungsstelle (CA), die kostenlose Zertifikate fürTransport Layer Security (TLS) encryption bereitstellt. Es bietet einen Software-Client namensCertbot, der den Prozess der Erstellung, Validierung, Signatur, Installation und Erneuerung von Zertifikaten vereinfacht.
Let's Encrypt unterstützt jetztwildcard certificates, mit denen Sie alle Subdomains einer Domain mit einem einzigen Zertifikat sichern können. Dies ist hilfreich, wenn Sie mehrere Dienste wie Webschnittstellen, APIs und andere Sites auf einem einzigen Server hosten möchten.
Um ein Platzhalterzertifikat von Let's Encrypt zu erhalten, müssen Sie eines derDNS pluginsvon Certbot verwenden. Dazu gehören:
-
certbot-dns-cloudflare
-
certbot-dns-route53
-
certbot-dns-google
-
certbot-dns-digitalocean
Welches Plugin Sie auswählen, hängt davon ab, auf welchem Dienst Ihre DNS-Einträge gehostet werden. In diesem Tutorial erhalten Sie ein Platzhalterzertifikat für Ihre Domain unter Verwendung der Validierung vonCloudFlaremit Certbot unter CentOS 7. Anschließend konfigurieren Sie das Zertifikat so, dass es nach Ablauf erneuert wird.
Voraussetzungen
Um dieses Lernprogramm abzuschließen, benötigen Sie Folgendes:
-
Ein CentOS 7-Server, der durch Befolgen vonthe CentOS 7 initial server setup guide eingerichtet wurde, einschließlich eines Sudo-Nicht-Root-Benutzers und einer Firewall.
-
Ein vollständig registrierter Domainname. Sie können einen Domain-Namen fürNamecheap kaufen, einen fürFreenom kostenlos erhalten oder den Domain-Registrar Ihrer Wahl verwenden.
-
ACloudflare Konto.
-
Ein DNS-Eintrag, der im DNS von Cloudflare für Ihre Domain eingerichtet wurde, sowie einige konfigurierte Unterdomänen. Sie könnenCloudFlare’s tutorial on setting up a web site folgen, um dies zu konfigurieren.
[[Schritt-1 - Installieren von Certbot]] == Schritt 1 - Installieren von Certbot
Das Paketcertbot
ist standardmäßig nicht über den Paketmanager von CentOS verfügbar. Sie müssen dasEPEL-Repository aktivieren, um Certbot und seine Plugins zu installieren.
Führen Sie den folgenden Befehl aus, um das CentOS 7 EPEL-Repository hinzuzufügen:
sudo yum install -y epel-release
Nach Abschluss der Installation können Siecertbot
installieren:
sudo yum install -y certbot
Und dann installieren Sie das CloudFlare-Plugin für Certbot:
sudo yum install -y python2-cloudflare python2-certbot-dns-cloudflare
[.Hinweis]##
Wenn Sie einen anderen DNS-Dienst verwenden, können Sie das entsprechende Plugin mit dem Befehlyum search
finden:
yum search python2-certbot-dns
Sie haben Ihren Server für den Erhalt von Zertifikaten vorbereitet. Jetzt müssen Sie den API-Schlüssel von CloudFlare erhalten.
[[Schritt-2 - Abrufen der Cloudflare-API]] == Schritt 2 - Abrufen der CloudFlare-API
Damit Certbot Platzhalterzertifikate automatisch erneuert, müssen Sie Ihr CloudFlare-Login und Ihren API-Schlüssel angeben.
Melden Sie sich bei Ihrem Cloudflare-Konto an und navigieren Sie zuProfile page.
Klicken Sie in der ZeileGlobal API Key auf die SchaltflächeView.
Aus Sicherheitsgründen werden Sie aufgefordert, das Kennwort Ihres Cloudflare-Kontos erneut einzugeben. Geben Sie es ein und validieren Sie das CAPTCHA. Klicken Sie dann erneut auf die SchaltflächeView. Sie sehen Ihren API-Schlüssel:
Kopieren Sie diesen Schlüssel. Sie werden es im nächsten Schritt verwenden.
Kehren Sie jetzt zu Ihrem Server zurück, um mit dem Erhalt des Zertifikats fortzufahren.
[[Schritt-3 - Konfigurieren von Certbot]] == Schritt 3 - Konfigurieren von Certbot
Sie verfügen über alle erforderlichen Informationen, um Certbot die Verwendung von Cloudflare mitzuteilen. Schreiben Sie sie jedoch in eine Konfigurationsdatei, damit Сertbot sie automatisch verwenden kann.
Führen Sie zuerst den Befehlcertbot
ohne Parameter aus, um die anfängliche Konfigurationsdatei zu erstellen:
sudo certbot
Erstellen Sie als Nächstes eine Konfigurationsdatei im Verzeichnis/etc/letsencrypt
, die Ihre CloudFlare-E-Mail und Ihren API-Schlüssel enthält:
sudo vi /etc/letsencrypt/cloudflareapi.cfg
Fügen Sie Folgendes hinzu, indem Sie die Platzhalter durch Ihre Cloudflare-Anmeldung und Ihren API-Schlüssel ersetzen:
/etc/letsencrypt/cloudflareapi.cfg
dns_cloudflare_email = your_cloudflare_login
dns_cloudflare_api_key = your_cloudflare_api_key
Speichern Sie die Datei und beenden Sie den Editor.
Mit dem API-Schlüssel von Cloudflare können Sie über die Befehlszeile dieselben Aktionen ausführen wie über die Cloudflare-Benutzeroberfläche. Um Ihr Konto zu schützen, müssen Sie die Konfigurationsdatei lesbar machen Nur von seinem Besitzer, damit niemand sonst Ihren Schlüssel erhalten kann:
sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg
Lassen Sie uns mit den vorhandenen Konfigurationsdateien ein Zertifikat anfordern.
[[Schritt-4 -—- Erhalten des Zertifikats]] == Schritt 4 - Erhalten des Zertifikats
Um ein Zertifikat zu erhalten, verwenden wir den Befehlcertbot
und geben das gewünschte Plugin, die Anmeldeinformationsdatei, die wir verwenden möchten, und den Server an, den wir zur Bearbeitung der Anforderung verwenden sollen. Standardmäßig verwendet Certbot die Produktionsserver von Let's Encrypt, dieACMEAPI-Version 1 verwenden. Certbot verwendet jedoch ein anderes Protokoll zum Abrufen von Platzhalterzertifikaten. Daher müssen Sie einen ACME v2-Endpunkt bereitstellen.
Führen Sie den folgenden Befehl aus, um das Platzhalterzertifikat für Ihre Domain zu erhalten:
sudo certbot certonly --cert-name your_domain --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg --server https://acme-v02.api.letsencrypt.org/directory -d "*.your_domain" -d your_domain
Sie werden aufgefordert, die E-Mail-Adresse anzugeben, an die dringende Erneuerungs- und Sicherheitshinweise gesendet werden sollen:
Output...
Plugins selected: Authenticator dns-cloudflare, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): your email
Dann werden Sie gebeten, den Nutzungsbedingungen zuzustimmen:
Output-------------------------------------------------------------------------------
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: A
Anschließend werden Sie aufgefordert, Ihre E-Mail-Adresse an die Electronic Frontier
Foundation weiterzugeben:
Output-------------------------------------------------------------------------------
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 EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: N
Dann erhält Certbot Ihre Zertifikate. Sie sehen die folgende Meldung:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2018-07-31. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Jetzt haben Sie Ihr Wildcard-Zertifikat. Sehen wir uns an, was Certbot für Sie heruntergeladen hat. Verwenden Sie den Befehlls
, um den Inhalt des Verzeichnisses anzuzeigen, in dem sich Ihre Schlüssel und Zertifikate befinden:
sudo ls /etc/letsencrypt/live/your_domain
Outputcert.pem chain.pem fullchain.pem privkey.pem README
Die DateiREADME
enthält Informationen zu diesen Dateien:
$ cat /etc/letsencrypt/live/your_domain/README
Die Ausgabe sieht folgendermaßen aus:
Liesmich
This directory contains your keys and certificates.
`privkey.pem` : the private key for your certificate.
`fullchain.pem`: the certificate file used in most server software.
`chain.pem` : used for OCSP stapling in Nginx >=1.3.7.
`cert.pem` : will break many server configurations, and should not be used
without reading further documentation (see link below).
We recommend not moving these files. For more information, see the Certbot
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.
Von hier aus können Sie Ihre Server mit dem Platzhalterzertifikat konfigurieren. Normalerweise benötigen Sie nur zwei dieser Dateien:fullchain.pem
undprivkey.pem
.
Sie können beispielsweise mehrere webbasierte Dienste konfigurieren:
-
wwww.example.com
-
api.example.com
-
mail.example.com
Dazu benötigen Sie einen Webserver wie Apache oder Nginx. Die Installation und Konfiguration dieser Server geht über den Rahmen dieses Lernprogramms hinaus. In den folgenden Handbüchern werden Sie jedoch durch alle erforderlichen Schritte zum Konfigurieren der Server und Anwenden Ihrer Zertifikate geführt.
Schauen Sie sich für Nginx diese Tutorials an:
Informationen zu Apache finden Sie in den folgenden Tutorials:
Sehen wir uns nun an, wie die Zertifikate automatisch erneuert werden.
[[Schritt-5 - Erneuern von Zertifikaten]] == Schritt 5 - Erneuern von Zertifikaten
Let 's Encrypt stellt kurzlebige Zertifikate aus, die 90 Tage gültig sind. Wir müssen eine Cron-Task einrichten, um zu überprüfen, ob Zertifikate abgelaufen sind, und sie automatisch zu erneuern.
Erstellen wir eincron task
, das die Erneuerungsprüfung täglich durchführt.
Verwenden Sie den folgenden Befehl, um diecrontab
-Datei zum Bearbeiten zu öffnen:
sudo crontab -e
Fügen Sie der Datei die folgende Zeile hinzu, um zu versuchen, die Zertifikate täglich zu erneuern:
crontab
30 2 * * * certbot renew --noninteractive
-
30 2 * * *
bedeutet "jeden Tag um 2:30 Uhr den folgenden Befehl ausführen". -
Der Befehl
certbot renew
überprüft alle auf dem System installierten Zertifikate und aktualisiert alle Zertifikate, deren Ablauf in weniger als 30 Tagen festgelegt ist. -
--noninteractive
weist Certbot an, nicht auf Benutzereingaben zu warten.
Nach dem Aktualisieren Ihrer Zertifikate müssen Sie Ihren Webserver neu laden. Der Befehlrenew
enthält Hooks zum Ausführen von Befehlen oder Skripten vor oder nach der Erneuerung eines Zertifikats. Sie können diese Hooks auch in der Erneuerungskonfigurationsdatei für Ihre Domain konfigurieren.
Um beispielsweise Ihren Nginx-Server neu zu laden, öffnen Sie die Erneuerungskonfigurationsdatei:
sudo vi /etc/letsencrypt/renewal/your_domain.conf
Fügen Sie dann die folgende Zeile unter dem Abschnitt[renewalparams]
hinzu:
your_domain.conf’>/etc/letsencrypt/renewal/your_domain.conf
renew_hook = systemctl reload nginx
Jetzt startet Certbot Ihren Webserver nach der Installation des aktualisierten Zertifikats automatisch neu.
Fazit
In diesem Lernprogramm haben Sie den Certbot-Client installiert, Ihr Platzhalterzertifikat mithilfe der DNS-Validierung abgerufen und die automatische Verlängerung aktiviert. Auf diese Weise können Sie ein einzelnes Zertifikat mit mehreren Unterdomänen Ihrer Domain verwenden und Ihre Webdienste sichern.