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

Installieren und verwenden Sie das Dienstprogramm Lets Encrypt Certbot unter CentOS 7 mit Apache

Dieser Artikel beschreibt die Installation und Verwendung des Dienstprogramms Let’s Encrypt® Certbot auf einem CentOS® 7-Server.

Was ist Let’s Encrypt?

Let’s Encrypt ist eine Zertifizierungsstelle (CA), die kostenlose 90-Tage-SSL-Zertifikate anbietet. Die folgenden Details stammen von ihrer About-Seite:

Let’s Encrypt ist eine kostenlose, automatisierte und offene Zertifizierungsstelle (CA), die zum Nutzen der Öffentlichkeit betrieben wird. Es ist ein Dienst der Internet Security Research Group (ISRG).

Wir geben Menschen die digitalen Zertifikate, die sie benötigen, um HTTPS (SSL/TLS) für Websites kostenlos und so benutzerfreundlich wie möglich zu aktivieren. Wir tun dies, weil wir ein sichereres und datenschutzfreundlicheres Web schaffen möchten.

Die Schlüsselprinzipien hinter Let’s Encrypt sind:

  • Kostenlos :Jeder, der einen Domainnamen besitzt, kann mit Let’s Encrypt kostenlos ein vertrauenswürdiges Zertifikat erhalten.
  • Automatisch :Software, die auf einem Webserver ausgeführt wird, kann mit Let’s Encrypt interagieren, um problemlos ein Zertifikat zu erhalten, es sicher für die Verwendung zu konfigurieren und sich automatisch um die Erneuerung zu kümmern.
  • Sicher :Let’s Encrypt wird als Plattform für die Weiterentwicklung der Best Practices für die TLS-Sicherheit dienen, sowohl auf der Seite der Zertifizierungsstelle als auch durch die Unterstützung von Website-Betreibern bei der ordnungsgemäßen Sicherung ihrer Server.
  • Transparent :Alle ausgestellten oder widerrufenen Zertifikate werden öffentlich aufgezeichnet und können von jedem eingesehen werden.
  • Öffnen :Das automatische Ausstellungs- und Verlängerungsprotokoll wird als offener Standard veröffentlicht, den andere übernehmen können.
  • Genossenschaft :Ähnlich wie die zugrunde liegenden Internetprotokolle selbst ist Let’s Encrypt eine gemeinsame Anstrengung zum Nutzen der Community, die sich der Kontrolle einer einzelnen Organisation entzieht.

Was ist der Unterschied zwischen Let’s Encrypt und anderen SSL-Zertifikaten?

SSL-Zertifikate sind Schlüssel, die dabei helfen, Ihre Serverdaten zu verschlüsseln. Webbrowser erkennen nur SSL-Zertifikate, die von einer bekannten Zertifizierungsstelle wie DigiCert, GoDaddy, COMODO usw. bereitgestellt wurden. Alle bekannten und vertrauenswürdigen CAs sind Mitglieder des CA/Browser-Forums (cabforum.org) und befolgen strenge Anforderungen zur Ausstellung von Zertifikaten.

Es gibt drei verschiedene Ebenen von SSL-Zertifikaten:

  • Domain Validation (DV)-Zertifikat :Dies ist ein grundlegendes SSL-Zertifikat, das die Domain-Inhaberschaft nachweist. Es ist keine zusätzliche Validierung erforderlich.

  • Organizational Validation (OV)-Zertifikat :Dieses Zertifikat beweist nicht nur das Eigentum an der Domain, sondern beweist auch, dass ein tatsächliches Unternehmen mit gutem Ansehen bei einer Regierungsbehörde Eigentümer der Domain ist.

  • Extended Validation (EV)-Zertifikat :Dieses Zertifikat geht noch einen Schritt weiter als das OV-Zertifikat, indem es zusätzlich bestätigt, dass das Unternehmen seit mindestens drei Jahren operativ besteht.

Auf der Rückseite sind dies erhebliche Unterschiede, die eine wichtige Rolle spielen, wenn Sie ein Zertifikat von einer Zertifizierungsstelle erwerben, da Sie deren Validierungsprozess durchlaufen müssen.

Auf dem Frontend gibt es keinen sichtbaren Unterschied zwischen den drei Zertifikatstypen. Die Browserfunktion zur Unterscheidung zwischen den verschiedenen Zertifikatsebenen ist veraltet. Weitere Informationen finden Sie unter:Extended Validation Certificates are (Really, Really) Dead

Let’s Encrypt, eine offizielle Zertifizierungsstelle im CA/Browser-Forum, bietet kostenlose Basis-DV-Zertifikate an, die jeweils 90 Tage lang gültig sind. Was Let’s Encrypt einzigartig macht, ist das Dienstprogramm Certbot, das Sie auf einem Webserver installieren können, um Ihre SSL-Zertifikate mithilfe automatisierter Prozesse auszustellen und zu verwalten. Die Verwendung des Certbot führt zu weniger Wartung und weniger Kopfschmerzen. Die 90-tägige Gültigkeitsdauer bedeutet, dass die Zertifikatsschlüssel häufiger durchlaufen werden, was eine bessere Sicherheit bietet, da ein viel kleineres Fenster eines möglicherweise kompromittierten Schlüssels vorhanden ist.

Legen Sie los

Dieser Artikel konzentriert sich auf die Installation von Certbot auf der neuesten Version von CentOS 7. Der in diesem Beispiel verwendete Server führt den folgenden LAMP-Stack aus:

  • CentOS Linux®-Version 7.8.2003 (Core)
  • PHP 7.4.8
  • MariaDB® 5.5.65
  • Apache® 2.4.6

Die Anweisungen und Befehle dieses Artikels bieten die grundlegenden Funktionen zum Abrufen eines Zertifikats von Let’s Encrypt. Certbot ist für die Ausführung nicht von einer Webanwendung abhängig, erfordert jedoch ein Mittel, um zu bestätigen, dass Sie die Domäne tatsächlich kontrollieren. Dieser Artikel behandelt die Validierung mit der Webroot-Methode, was bedeutet, dass Sie die Domäne, für die Sie ein Zertifikat benötigen, auf dem Server hosten, auf dem Sie Certbot installiert haben.

Wichtig :Die Anweisungen des Artikels verwenden eine standardmäßige Apache-Konfiguration für eine einzelne Site auf dem Server. Ihre Konfiguration kann je nach Ihrer Apache-Konfiguration variieren.

Certbot installieren

Nachdem Sie Ihren Server für die Bereitstellung Ihrer Webseite eingerichtet haben, verwenden Sie den folgenden Befehl, um Certbot zu installieren:

[root@leexample-centos7 ~]# yum install certbot

Certbot erfordert die folgenden Abhängigkeiten:

=================================================================================================================================
 Package                                   Arch                    Version                           Repository             Size
=================================================================================================================================
Installing:
 certbot                                   noarch                  1.6.0-1.el7                       epel                   44 k
Installing for dependencies:
 pyOpenSSL                                 x86_64                  0.13.1-4.el7                      base                  135 k
 python-ndg_httpsclient                    noarch                  0.3.2-1.el7                       epel                   43 k
 python-requests-toolbelt                  noarch                  0.8.0-3.el7                       epel                   78 k
 python-zope-component                     noarch                  1:4.1.0-5.el7                     epel                  228 k
 python-zope-event                         noarch                  4.0.3-2.el7                       epel                   79 k
 python-zope-interface                     x86_64                  4.0.5-4.el7                       base                  138 k
 python2-acme                              noarch                  1.6.0-1.el7                       epel                   81 k
 python2-certbot                           noarch                  1.6.0-1.el7                       epel                  374 k
 python2-configargparse                    noarch                  0.11.0-2.el7                      epel                   31 k
 python2-future                            noarch                  0.18.2-2.el7                      epel                  806 k
 python2-josepy                            noarch                  1.3.0-2.el7                       epel                   89 k
 python2-mock                              noarch                  1.0.1-10.el7                      epel                   92 k
 python2-parsedatetime                     noarch                  2.4-6.el7                         epel                   78 k
 python2-pyrfc3339                         noarch                  1.1-3.el7                         epel                   16 k
 python2-six                               noarch                  1.9.0-0.el7                       epel                  2.9 k
 pytz                                      noarch                  2016.10-2.el7                     base                   46 k

Transaction Summary
=================================================================================================================================

Fordern Sie ein neues Zertifikat mit Certbot an

Wenn Certbot installiert ist, können Sie ein Zertifikat von Let’s Encrypt anfordern. Beachten Sie die folgenden Punkte, bevor Sie fortfahren:

  • Die Domains, die Sie anfordern. Sie können bis zu 100 Domänen mit einem einzigen Let’s Encrypt-Zertifikat anfordern.

  • Der Speicherort des Dokumentstammverzeichnisses oder der Verzeichnisse Ihrer Website. Sie benötigen diese Informationen für den certbot Befehl, um die txt-Datei zur Validierung zu installieren. Wenn Sie mehrere Domänen hinzufügen, die auf unterschiedliche Verzeichnisse verweisen, müssen Sie sie alle im Befehl auflisten.

  • Sie müssen den Zugriff auf /.well-known/acme-challenge/ erlauben Verzeichnis.

  • Sie müssen /.well-known/acme-challenge/ ausschließen Verzeichnis von einer erzwungenen HTTP-zu-HTTPS-Umleitung.

Hinweis: Wenn Sie Certbot zum ersten Mal ausführen, werden Sie aufgefordert, Ihre E-Mail-Adresse einzugeben und den Nutzungsbedingungen zuzustimmen.

Führen Sie den folgenden Befehl mit Ihren Daten aus, um ein Zertifikat anzufordern:

[root@leexample-centos7 ~]# certbot certonly --webroot -w /var/www/vhosts/example.com -d example.com -d www.example.com

Eine Erklärung der Befehlselemente folgt:

  • certonly :ein Flag, das angibt, nur ein Zertifikat auszustellen und sonst nichts zu tun. Der Befehl führt keine Webanwendungskonfiguration durch.
  • --webroot :weist Certbot an, ein bestimmtes Webverzeichnis zu verwenden, jeweils getrennt durch -w Flagge.
  • -d :gibt die anzufordernde Domain an. Sie müssen -d haben Flag für jede Domain, die Sie auf dem Zertifikat haben möchten.

Hinweis: Wenn Sie sowohl das www und nicht-www Versionen einer Domäne auf einem einzigen Zertifikat, müssen Sie ein -d verwenden Flag für jeden.

Nachdem Sie den Befehl eingegeben haben, wird die folgende Ausgabe angezeigt:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for letest.mccrocklin.space
Using the webroot path /var/www/vhosts/example.com for all unmatched domains.
Waiting for verification...

Wenn es keine Probleme mit der Validierung gibt, sehen Sie die folgende Ausgabe:

Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-10-30. 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

Speicherorte der Zertifikatsdatei

Certbot installiert die Zertifikate standardmäßig unter /etc/letsencrypt/live// .

<domain.tld> ist immer die erste Domäne, die Sie festlegen, wenn Sie den certbot ausführen Befehl. Denken Sie daran, wenn Sie Ihre virtuellen Host- oder Serverblöcke so konfigurieren, dass sie auf die Zertifikatsdateien zeigen.

Sie können erwarten, die folgenden Dateien im Verzeichnis zu sehen:

[root@leexample-centos7 ~]# ls -al /etc/letsencrypt/live/example.com
total 12
drwxr-xr-x. 2 root root 4096 Aug  1 13:35 .
drwx------. 3 root root 4096 Aug  1 13:35 ..
lrwxrwxrwx. 1 root root   47 Aug  1 13:35 cert.pem -> ../../archive/example.com/cert1.pem
lrwxrwxrwx. 1 root root   48 Aug  1 13:35 chain.pem -> ../../archive/example.com/chain1.pem
lrwxrwxrwx. 1 root root   52 Aug  1 13:35 fullchain.pem -> ../../archive/example.com/fullchain1.pem
lrwxrwxrwx. 1 root root   50 Aug  1 13:35 privkey.pem -> ../../archive/example.com/privkey1.pem
-rw-r--r--. 1 root root  692 Aug  1 13:35 README

Beachten Sie, dass alle diese Dateien symbolische Links sind. Dies ist wichtig für den automatischen Verlängerungsprozess, der im folgenden Abschnitt Verlängerung beschrieben wird. Beachten Sie die folgenden Dateinamen und ihre Verwendung:

  • cert.pem ist das Zertifikat.
  • chain.pem ist das CA-Paket.
  • fullchain.pem ist das Zertifikat, gefolgt vom CA-Paket.
  • privkey.pem ist der private Schlüssel.

Apache konfigurieren

Verwenden Sie die folgenden Befehle, um Apache zu konfigurieren:

  1. Fügen Sie in der standardmäßigen Apache-Konfiguration die folgenden Zeilen zu /etc/httpd/conf.d/ssl.conf hinzu :

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCACertificateFile /etc/letsencrypt/live/example.com/chain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    
  2. Speichern Sie die Änderungen und beenden Sie.

  3. Führen Sie den folgenden Befehl aus, um eine Syntaxprüfung durchzuführen:

    httpd -t
    
  4. Wenn Sie Syntax OK erhalten , und führen Sie dann den folgenden Befehl aus, um Apache neu zu laden:

    systemctl reload httpd
    

Erneuern Sie Ihre Zertifikate

Let’s Encrypt-Zertifikate haben eine Lebensdauer von 90 Tagen. Wenn Sie also viele Zertifikate erneuern müssen, die über das Certbot-Dienstprogramm angefordert werden, kann der häufige Erneuerungszyklus entmutigend sein.

Glücklicherweise verfügt Certbot über eine integrierte Verlängerungsfunktion, die dies für Sie erledigt. Es wird jedoch nicht automatisch ausgeführt, daher sollten Sie es so planen, dass es als cron ausgeführt wird Arbeit. Der Cerbot-Erneuerungsprozess verwendet die folgenden Schritte:

  1. Der Befehl certbot renew , leitet den Vorgang ein.

  2. Certbot überprüft alle Zertifikate, die auf Ihrem Server ausgestellt und installiert wurden. Es sucht speziell nach Zertifikaten, die in den nächsten 30 Tagen ablaufen.

  3. Certbot versucht, diese ablaufenden Zertifikate zu erneuern, indem es dieselbe Validierungsmethode verwendet, die für die ursprüngliche Zertifikatsanforderung verwendet wurde.

  4. Nach erfolgreicher Verlängerung erstellt Certbot neue Dateien in /etc/letsencrypt/archive// Verzeichnis, erhöht die Nummer für jede Erneuerungsiteration und aktualisiert die symbolischen Links in /etc/letsencrypt/live// . Da sich die Namen der Zertifikatsdateien nicht wirklich ändern, müssen Sie den Dateipfad in den Konfigurationsdateien des virtuellen Host- oder Serverblocks nicht ändern. Dies sorgt für einen reibungsloseren Erneuerungsprozess.

Cronjob einrichten

Es ist wichtig zu beachten, dass die tatsächliche Häufigkeit des Cron-Jobs von Ihrer Serverkonfiguration abhängt. Die Verlängerungsfunktion scannt nur vorhandene Zertifikate, bis sie eines findet, das innerhalb der nächsten 30 Tage abläuft. Es ist sicher, den Cron-Job so einzustellen, dass er in Zeiten mit geringem Datenverkehr einmal täglich ausgeführt wird. Wenn Sie viele Let’s Encrypt-Zertifikate haben, die zu unterschiedlichen Zeiten ausgestellt wurden, kann es diese abfangen, wenn sie die 30-Tage-Marke erreichen.

Sie können es jedoch auch weniger häufig ausführen lassen. Zum Beispiel einmal pro Woche jeden Sonntag um 3 Uhr morgens.

Sie können den Cron-Job erstellen, indem Sie die Crontab oder Anacron des Root-Benutzers verwenden. Anacron stellt sicher, dass der Cron-Job ausgeführt wird, selbst wenn er während der Serverausfallzeit verpasst wurde.

Verwenden Sie die folgenden Schritte, um den Cron-Job zu erstellen:

  1. Bestätigen Sie den richtigen Pfad, indem Sie den Befehl direkt eingeben:

    [root@leexample-centos7 ~]# which certbot
    /usr/bin/certbot
    
  2. Bestimmen Sie, welche Cron-Methode Sie verwenden möchten:

    • Anacron :Erstellen Sie eine neue Datei in /etc/cron.weekly/ - Sie können es zum Beispiel certbotrenew benennen

    • Cron :Verwenden Sie crontab -e

  3. Erstellen Sie den Cron-Eintrag wie den folgenden in der von Ihnen gewählten Methode:

    0 3 * * 0 /usr/bin/certbot renew
    
  4. Speichern Sie die Datei.

Schlussfolgerung

Let’s Encrypt ist eine großartige Alternative, um kostenlose SSL-Zertifikate für Ihre Domains zu erhalten. Diese Zertifikate sind DV-Zertifikate, was bedeutet, dass sie nur die Domain-Inhaberschaft validieren. Dieser Artikel behandelt die Grundfunktionen des Dienstprogramms Let’s Encrypt Certbot. Wenn Sie zusätzliche Optionen und erweiterte Funktionen benötigen, erhalten Sie weitere Unterstützung von der Let’s Encrypt Community:

  • Let's Encrypt
  • Let’s Encrypt-Dokumentation
  • Let’s Encrypt Community-Forum

Linux
  1. Sichern Sie Apache mit Lets Encrypt unter CentOS 7

  2. So installieren Sie Shopware mit NGINX und Lets Encrypt unter CentOS 7

  3. So installieren Sie WonderCMS mit Nginx und Lets Encrypt SSL unter CentOS 7

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

  5. Installieren Sie Apache und PHP unter CentOS 7

So installieren Sie Shopware 6 mit NGINX und Lets Encrypt unter CentOS 8

So installieren Sie PrestaShop mit Apache und Lets Encrypt SSL unter CentOS 8

Installieren Sie TaskBoard mit Apache und lassen Sie SSL unter Debian 11 verschlüsseln

So installieren Sie InvoicePlane mit Apache und dem kostenlosen Lets Encrypt SSL-Zertifikat unter Debian 11

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