Abrufen Verschlüsseln Sie SSL-Wildcard-Zertifikate mithilfe der CloudFlare-Validierung unter CentOS 7

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 Paketcertbotist 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.

CloudFlare Profile - API Keys

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:

CloudFlare Profile - API Keys

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 DateiREADMEenthä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 Befehlcertbot 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.