GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Sichern Sie Apache mit Lets Encrypt unter CentOS 7

Let’s Encrypt ist eine kostenlose, automatisierte und offene Zertifizierungsstelle, die von der Internet Security Research Group (ISRG) entwickelt wurde. Von Let’s Encrypt ausgestellte Zertifikate sind 90 Tage ab Ausstellungsdatum gültig und werden heute von allen gängigen Browsern als vertrauenswürdig eingestuft.

In diesem Tutorial behandeln wir die Schritte, die zum Installieren eines kostenlosen SSL-Zertifikats von Let’s Encrypt auf einem CentOS 7-Server erforderlich sind, auf dem Apache als Webserver ausgeführt wird. Wir verwenden das Dienstprogramm certbot, um Let’s Encrypt-Zertifikate zu erhalten und zu erneuern.

Voraussetzungen #

Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie mit diesem Lernprogramm fortfahren:

  • Haben Sie einen Domänennamen, der auf die IP Ihres öffentlichen Servers verweist. Wir verwenden example.com .
  • Apache ist installiert und wird auf Ihrem Server ausgeführt.
  • Verwenden Sie einen virtuellen Apache-Host für Ihre Domain.
  • Die Ports 80 und 443 sind in Ihrer Firewall geöffnet.

Installieren Sie die folgenden Pakete, die für einen SSL-verschlüsselten Webserver erforderlich sind:

yum install mod_ssl openssl

Installieren Sie Certbot #

Certbot ist ein Tool, das den Prozess zum Abrufen von SSL-Zertifikaten von Let’s Encrypt und zum automatischen Aktivieren von HTTPS auf Ihrem Server vereinfacht.

Das certbot-Paket kann von EPEL installiert werden. Wenn das EPEL-Repository nicht auf Ihrem System installiert ist, können Sie es mit dem folgenden Befehl installieren:

sudo yum install epel-release

Sobald das EPEL-Repository aktiviert ist, installieren Sie das certbot-Paket, indem Sie Folgendes eingeben:

sudo yum install certbot

Generiere Strong Dh (Diffie-Hellman) Gruppe #

Der Diffie-Hellman-Schlüsselaustausch (DH) ist eine Methode zum sicheren Austausch kryptografischer Schlüssel über einen ungesicherten Kommunikationskanal. Generieren Sie einen neuen Satz von 2048-Bit-DH-Parametern, um die Sicherheit zu erhöhen:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Sie können die Größe auf bis zu 4096 Bit ändern, aber in diesem Fall kann die Generierung je nach Systementropie mehr als 30 Minuten dauern.

Ein SSL-Zertifikat von Let’s Encrypt erhalten #

Um ein SSL-Zertifikat für unsere Domain zu erhalten, verwenden wir das Webroot-Plug-in, das eine temporäre Datei zur Validierung der angeforderten Domain im ${webroot-path}/.well-known/acme-challenge Verzeichnis. Der Let’s Encrypt-Server stellt HTTP-Anforderungen an die temporäre Datei, um zu überprüfen, ob die angeforderte Domäne zu dem Server aufgelöst wird, auf dem certbot ausgeführt wird.

Um es einfacher zu machen, werden wir alle HTTP-Anfragen für .well-known/acme-challenge abbilden in ein einziges Verzeichnis, /var/lib/letsencrypt .

Führen Sie die folgenden Befehle aus, um das Verzeichnis zu erstellen und es für den Apache-Server beschreibbar zu machen:

sudo mkdir -p /var/lib/letsencrypt/.well-knownsudo chgrp apache /var/lib/letsencryptsudo chmod g+s /var/lib/letsencrypt

Um doppelten Code zu vermeiden, erstellen Sie die folgenden zwei Konfigurationsausschnitte:

/etc/httpd/conf.d/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>
/etc/httpd/conf.d/ssl-params.conf
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options SAMEORIGIN
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off

Das obige Snippet enthält die empfohlenen Chipper, aktiviert OCSP Stapling, HTTP Strict Transport Security (HSTS) und erzwingt wenige sicherheitsorientierte HTTP-Header.

Laden Sie die Apache-Konfiguration neu, damit die Änderungen wirksam werden:

sudo systemctl reload httpd

Jetzt können wir das Certbot-Tool mit dem Webroot-Plugin ausführen und die SSL-Zertifikatsdateien abrufen, indem wir Folgendes eingeben:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Wenn das SSL-Zertifikat erfolgreich erhalten wurde, druckt certbot die folgende Nachricht:

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 2018-12-07. 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"
 - 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

CentOS 7 wird mit der Apache-Version 2.4.6 ausgeliefert, die SSLOpenSSLConfCmd nicht enthält Richtlinie. Diese Direktive ist erst ab Apache 2.4.8 verfügbar und wird zur Konfiguration von OpenSSL-Parametern wie dem Diffie-Hellman-Schlüsselaustausch (DH) verwendet.

Wir müssen eine neue kombinierte Datei mit dem SSL-Zertifikat von Let’s Encrypt und der generierten DH-Datei erstellen. Geben Sie dazu Folgendes ein:

cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem

Nachdem alles eingerichtet ist, bearbeiten Sie die Konfiguration Ihres virtuellen Domänenhosts wie folgt:

/etc/httpd/conf.d/example.com.conf
<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  <If "%{HTTP_HOST} == 'www.example.com'">
    Redirect permanent / https://example.com/
  </If>

  DocumentRoot /var/www/example.com/public_html
  ErrorLog /var/log/httpd/example.com-error.log
  CustomLog /var/log/httpd/example.com-access.log combined

  SSLEngine On
  SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

  # Other Apache Configuration

</VirtualHost>

Mit der obigen Konfiguration erzwingen wir eine HTTPSand-Weiterleitung von www zu einer nicht-www-Version. Fühlen Sie sich frei, die Konfiguration an Ihre Bedürfnisse anzupassen.

Starten Sie den Apache-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl restart httpd

Sie können Ihre Website jetzt mit https:// öffnen und Sie werden ein grünes Schlosssymbol bemerken.

Wenn Sie Ihre Domain mit dem SSL Labs Server Test testen, erhalten Sie die Note A+ wie unten gezeigt:

SSL-Zertifikat von Let’s Encrypt automatisch verlängern #

Die Zertifikate von Let’s Encrypt sind 90 Tage gültig. Um die Zertifikate automatisch zu erneuern, bevor sie ablaufen, erstellen wir einen Cronjob, der zweimal täglich ausgeführt wird und jedes Zertifikat 30 Tage vor seinem Ablauf automatisch verlängert.

Führen Sie crontab aus Befehl, um einen neuen Cronjob zu erstellen, der das Zertifikat erneuert, eine neue kombinierte Datei einschließlich des DH-Schlüssels erstellt und Apache neu startet:

sudo crontab -e
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload httpd"

Speichern und schließen Sie die Datei.

Um den Erneuerungsprozess zu testen, können Sie den Befehl certbot gefolgt von --dry-run verwenden Schalter:

sudo certbot renew --dry-run

Wenn keine Fehler vorliegen, bedeutet dies, dass der Erneuerungsprozess erfolgreich war.


Cent OS
  1. Sichern Sie Apache mit Lets Encrypt auf Ubuntu 18.04

  2. Sichern Sie Apache mit Let's Encrypt auf CentOS 7 - Schritt-für-Schritt-Prozess?

  3. Installieren Sie Zenario mit Apache, PHP und MariaDB auf CentOS 7

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

  5. Installieren Sie Apache unter CentOS 8

So installieren Sie das ElkArte-Forum mit Apache und Lets Encrypt SSL unter CentOS 8

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

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 sichern Sie Apache mit Let’s Encrypt unter CentOS 8