Android

Sichern Sie Nginx, indem Sie es unter Debian 10 Linux verschlüsseln

AWS Tutorial For Beginners | AWS Full Course - Learn AWS In 10 Hours | AWS Training | Edureka

AWS Tutorial For Beginners | AWS Full Course - Learn AWS In 10 Hours | AWS Training | Edureka

Inhaltsverzeichnis:

Anonim

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 ab dem Ausstellungsdatum 90 Tage lang gültig.

Dieses Tutorial zeigt, wie man ein kostenloses Let's Encrypt SSL-Zertifikat auf Debian 10, Buster, installiert, auf dem Nginx als Webserver ausgeführt wird. Wir zeigen auch, wie Nginx für die Verwendung des SSL-Zertifikats und die Aktivierung von HTTP / 2 konfiguriert wird.

Voraussetzungen

Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie mit dem Handbuch fortfahren:

  • Als root oder Benutzer mit sudo-Berechtigungen angemeldet. Die Domain, für die Sie das SSL-Zertifikat erhalten möchten, muss auf Ihre öffentliche Server-IP verweisen. Wir werden example.com Nginx installiert.

Certbot installieren

Wir werden das Certbot-Tool verwenden, um die Zertifikate zu erhalten und zu erneuern.

Certbot ist ein voll funktionsfähiges und benutzerfreundliches Tool, das die Aufgaben zum Abrufen und Erneuern von Let's Encrypt SSL-Zertifikaten und zum Konfigurieren von Webservern für die Verwendung der Zertifikate automatisiert.

Das certbot-Paket ist in den Standard-Debian-Repositories enthalten. Führen Sie die folgenden Befehle aus, um certbot zu installieren:

sudo apt update sudo apt install certbot

Generierung der Dh (Diffie-Hellman) Gruppe

Diffie-Hellman-Schlüsselaustausch (DH) ist eine Methode zum sicheren Austauschen von kryptografischen Schlüsseln über einen ungesicherten Kommunikationskanal.

Wir werden einen neuen Satz von 2048-Bit-DH-Parametern generieren, um die Sicherheit zu erhöhen:

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

Sie können die Größe auch auf bis zu 4096 Bit ändern, die Generierung kann jedoch je nach Systementropie länger als 30 Minuten dauern.

Erhalten eines SSL-Zertifikats von Let's Encrypt

Um ein SSL-Zertifikat für die Domain zu erhalten, verwenden wir das Webroot-Plugin. ${webroot-path}/.well-known/acme-challenge eine temporäre Datei zum Überprüfen der angeforderten Domain im ${webroot-path}/.well-known/acme-challenge . Der Let's Encrypt-Server sendet HTTP-Anforderungen an die temporäre Datei, um zu überprüfen, ob die angeforderte Domäne auf den Server aufgelöst wurde, auf dem Certbot ausgeführt wird.

Wir werden alle HTTP-Anforderungen für .well-known/acme-challenge einem einzelnen Verzeichnis .well-known/acme-challenge , /var/lib/letsencrypt .

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

mkdir -p /var/lib/letsencrypt/.well-known chgrp www-data /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt

Um zu vermeiden, dass Code dupliziert wird, erstellen wir zwei Snippets, die in allen Nginx-Serverblockdateien enthalten sind.

Öffne deinen Texteditor und erstelle das erste Snippet, letsencrypt.conf :

sudo nano /etc/nginx/snippets/letsencrypt.conf /etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }

Das zweite Snippet ssl.conf enthält die von Mozilla empfohlenen Chipper, aktiviert OCSP-Heftung, HTTP Strict Transport Security (HSTS) und erzwingt einige sicherheitsgerichtete

sudo nano /etc/nginx/snippets/ssl.conf /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; 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;

Öffnen Sie anschließend die Domain Server-Blockdatei und letsencrypt.conf Snippet letsencrypt.conf wie folgt hinzu:

sudo nano /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com

server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }

Erstellen Sie eine symbolische Verknüpfung mit dem sites-enabled Verzeichnis, um den Domain-Server-Block zu aktivieren:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

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

sudo systemctl restart nginx

Sie können jetzt die SSL-Zertifikatdateien abrufen, indem Sie den folgenden Befehl ausführen:

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, wird die folgende Nachricht auf Ihrem Terminal gedruckt:

IMPORTANT NOTES: 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-02-22. 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:

Bearbeiten Sie den Domänenserverblock und fügen Sie die SSL-Zertifikatdateien wie folgt hinzu:

sudo nano /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com

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 }

Die obige Konfiguration weist Nginx an, von HTTP zu HTTPS und von der WWW-Version zur Nicht-WWW-Version umzuleiten.

Starten Sie den Nginx-Dienst neu oder laden Sie ihn neu, damit die Änderungen wirksam werden:

sudo systemctl restart nginx

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

Automatische Erneuerung Lassen Sie uns das SSL-Zertifikat verschlüsseln

Die Zertifikate von Let's Encrypt sind 90 Tage gültig. Um die Zertifikate vor Ablauf automatisch zu erneuern, erstellt das certbot-Paket einen Cronjob, der zweimal täglich ausgeführt wird und jedes Zertifikat 30 Tage vor Ablauf automatisch erneuert.

Bei der Erneuerung muss der Nginx-Dienst neu geladen werden, damit der Server das Zertifikat lädt. --renew-hook "systemctl reload nginx" an die Datei /etc/cron.d/certbot , so wie es aussieht:

sudo nano /etc/cron.d/certbot /etc/cron.d/certbot

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 nginx"

Testen Sie den automatischen Erneuerungsprozess, indem Sie diesen Befehl ausführen:

sudo certbot renew --dry-run

Wenn keine Fehler vorliegen, war der Erneuerungsprozess erfolgreich.

Fazit

Ein SSL-Zertifikat ist heutzutage ein Muss. Es sichert Ihre Website, erhöht die Position des SERP-Rankings und ermöglicht Ihnen, HTTP / 2 auf Ihrem Webserver zu aktivieren.

In diesem Tutorial haben wir Ihnen gezeigt, wie Sie SSL-Zertifikate mit dem certbot-Skript generieren und erneuern. Wir haben Ihnen auch gezeigt, wie Sie Nginx für die Verwendung der Zertifikate konfigurieren.

Weitere Informationen zu Certbot finden Sie in der Certbot-Dokumentation.

nginx debian verschlüsseln wir certbot ssl