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

Sichern Sie Nginx mit Lets Encrypt auf CentOS 8

Let’s Encrypt ist eine kostenlose, automatisierte und offene Zertifizierungsstelle, die von der Internet Security Research Group (ISRG) entwickelt wurde und kostenlose SSL-Zertifikate bereitstellt.

Von Let’s Encrypt ausgestellte Zertifikate werden von allen gängigen Browsern als vertrauenswürdig eingestuft und sind 90 Tage ab Ausstellungsdatum gültig.

In diesem Tutorial geben wir eine Schritt-für-Schritt-Anleitung zur Installation eines kostenlosen SSL-Zertifikats von Let’s Encrypt auf CentOS 8, auf dem Nginx als Webserver ausgeführt wird. Wir zeigen auch, wie Nginx für die Verwendung des SSL-Zertifikats konfiguriert und HTTP/2 aktiviert wird.

Voraussetzungen #

Bevor Sie fortfahren, vergewissern Sie sich, dass Sie die folgenden Voraussetzungen erfüllt haben:

  • Sie haben einen Domainnamen, der auf Ihre öffentliche IP verweist. Wir verwenden example.com .
  • Sie haben Nginx auf Ihrem CentOS-Server installiert.
  • Ihre Firewall ist so konfiguriert, dass sie Verbindungen auf den Ports 80 und 443 akzeptiert.

Installieren von Certbot #

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

Das certbot-Paket ist nicht in den standardmäßigen CentOS 8-Repositories enthalten, kann aber von der Website des Anbieters heruntergeladen werden.

Führen Sie das folgende wget aus Befehl als root- oder sudo-Benutzer, um das certbot-Skript in /usr/local/bin herunterzuladen Verzeichnis:

sudo wget -P /usr/local/bin https://dl.eff.org/certbot-auto

Sobald der Download abgeschlossen ist, machen Sie die Datei ausführbar:

sudo chmod +x /usr/local/bin/certbot-auto

Generieren von starker 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, indem Sie den folgenden Befehl eingeben:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Wenn Sie möchten, können Sie die Schlüssellänge auf bis zu 4096 Bit ändern, aber die Generierung kann je nach Systementropie mehr als 30 Minuten dauern.

Ein SSL-Zertifikat von Let’s Encrypt erhalten #

Um ein SSL-Zertifikat für die Domain zu erhalten, verwenden wir das Webroot-Plug-in, das funktioniert, indem es eine temporäre Datei zur Validierung der angeforderten Domain in ${webroot-path}/.well-known/acme-challenge Verzeichnis. Der Let’s Encrypt-Server sendet 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 .

Die folgenden Befehle erstellen das Verzeichnis und machen es für den Nginx-Server beschreibbar.

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

Um doppelten Code zu vermeiden, erstellen Sie die folgenden zwei Snippets, die in alle Blockdateien des Nginx-Servers aufgenommen werden:

sudo mkdir /etc/nginx/snippets
/etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}
/etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=63072000" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

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

Sobald die Snippets erstellt sind, öffnen Sie den Domänenserverblock und fügen Sie die letsencrypt.conf ein Snippet, wie unten gezeigt:

/etc/nginx/conf.d/example.com.conf
server {
  listen 80;
  server_name example.com www.example.com;

  include snippets/letsencrypt.conf;
}

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

sudo systemctl reload nginx

Führen Sie das certbot-Tool mit dem Webroot-Plugin aus, um die SSL-Zertifikatsdateien für Ihre Domain zu erhalten:

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

Wenn Sie zum ersten Mal certbot aufrufen , installiert das Tool die fehlenden Abhängigkeiten.

Sobald 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 2020-03-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto 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

Nachdem Sie nun die Zertifikatsdateien haben, können Sie Ihren Domänenserverblock wie folgt bearbeiten:

/etc/nginx/conf.d/example.com.conf
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # . . . other code
}

Mit der obigen Konfiguration erzwingen wir HTTPS und leiten die www-Version auf eine nicht-www-Version um.

Laden Sie abschließend den Nginx-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl reload nginx

Öffnen Sie nun Ihre Website mit https:// , und Sie werden ein grünes Schlosssymbol bemerken.

Wenn Sie Ihre Domain mit dem SSL Labs Server Test testen, erhalten Sie ein A+ Klasse, wie im Bild 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 vor Ablauf automatisch zu erneuern, erstellen Sie einen Cronjob, der zweimal täglich ausgeführt wird und jedes Zertifikat 30 Tage vor Ablauf automatisch verlängert.

Verwenden Sie die crontab Befehl zum Erstellen eines neuen Cronjobs:

sudo crontab -e

Fügen Sie die folgende Zeile ein:

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

Speichern und schließen Sie die Datei.

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

sudo ./certbot-auto renew --dry-run

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


Cent OS
  1. So sichern Sie Nginx mit Lets Encrypt auf Ubuntu 20.04 / 18.04

  2. Sichern Sie Nginx mit Lets Encrypt auf Ubuntu 18.04

  3. Sichern Sie Nginx mit Lets Encrypt auf Ubuntu 16.04

  4. Sichern Sie Apache mit Lets Encrypt auf Ubuntu 18.04

  5. Sichern Sie Nginx mit Lets Encrypt auf Ubuntu 20.04

So installieren Sie Vanila Forum und sichern es mit Lets Encrypt unter CentOS 8

So installieren Sie Askbot mit Nginx und sichern mit Lets Encrypt unter CentOS 8

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

So sichern Sie Apache mit Let’s Encrypt unter CentOS 8

So sichern Sie Nginx mit Let’s Encrypt unter CentOS 8

So sichern Sie Nginx mit Let’s Encrypt unter Ubuntu 20.04