What the heck is the event loop anyway? | Philip Roberts | JSConf EU
Inhaltsverzeichnis:
- Voraussetzungen
- Installieren Sie Certbot
- Generiere eine starke Dh (Diffie-Hellman) Gruppe
- Erhalten eines SSL-Zertifikats von Let's Encrypt
- Automatische Erneuerung Lassen Sie uns das SSL-Zertifikat verschlüsseln
- Fazit
Let's Encrypt ist eine kostenlose und offene Zertifizierungsstelle, die von der Internet Security Research Group (ISRG) entwickelt wurde. Von Let's Encrypt ausgestellte Zertifikate werden heute von fast allen Browsern als vertrauenswürdig eingestuft.
In diesem Tutorial wird erklärt, wie Sie mit dem Certbot-Tool ein kostenloses SSL-Zertifikat für Nginx unter Debian 9 erhalten. Außerdem wird gezeigt, wie Sie Nginx so konfigurieren, dass es das SSL-Zertifikat verwendet und HTTP / 2 aktiviert.
Voraussetzungen
Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie mit diesem Lernprogramm fortfahren:
- Als Benutzer mit sudo-Berechtigungen angemeldet. Geben Sie einen Domainnamen an, der auf Ihre öffentliche Server-IP verweist. Wir verwenden
example.com
Haben Nginx installiert, indem Sie diese Anweisungen befolgen. Sie haben einen Serverblock für Ihre Domain. Sie können diese Anweisungen befolgen, um Einzelheiten zum Erstellen eines solchen zu erfahren.
Installieren Sie Certbot
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 automatisieren kann. Das certbot-Paket ist in den Standard-Debian-Repositories enthalten.
Aktualisieren Sie die Paketliste und installieren Sie das certbot-Paket:
sudo apt update
sudo apt install certbot
Generiere eine starke 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
Wenn Sie möchten, können Sie die Größe auf bis zu 4096 Bit ändern. In diesem Fall kann die Generierung je nach Systementropie jedoch länger als 30 Minuten dauern.
Erhalten eines SSL-Zertifikats von Let's Encrypt
Um ein SSL-Zertifikat für unsere Domain zu erhalten, verwenden wir das Webroot-Plugin, mit dem eine temporäre Datei zur Validierung 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
.
Mit den folgenden Befehlen wird das Verzeichnis erstellt und für den Nginx-Server schreibbar gemacht.
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
Um das Duplizieren von Code zu vermeiden, erstellen Sie die folgenden zwei Snippets, die in allen unseren 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; }
Erstellen Sie das zweite Snippet
ssl.conf
mit den von Mozilla empfohlenen Chippern, aktivieren Sie OCSP-Heftung, HTTP Strict Transport Security (HSTS) und erzwingen Sie 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 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; 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=15768000; includeSubdomains; preload"; 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; }
Aktivieren Sie den neuen Serverblock, indem Sie einen symbolischen Link zum
sites-enabled
Verzeichnis erstellen:
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 Certbot jetzt mit dem Webroot-Plugin ausführen und die SSL-Zertifikatsdateien erhalten, indem Sie 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, wird die folgende Nachricht auf Ihrem Terminal gedruckt:
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-07-28. 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:
Bearbeiten Sie als Nächstes den Domain-Server-Block wie folgt:
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 }
Mit der obigen Konfiguration erzwingen wir HTTPS und leiten von der WWW-Version zur Nicht-WWW-Version um.
Laden Sie den Nginx-Dienst neu, damit die Änderungen wirksam werden:
Automatische Erneuerung Lassen Sie uns das SSL-Zertifikat verschlüsseln
Die Zertifikate von Let's Encrypt sind 90 Tage gültig. Um die Zertifikate automatisch zu erneuern, bevor sie ablaufen, erstellt das certbot-Paket einen Cronjob, der zweimal täglich ausgeführt wird und alle Zertifikate 30 Tage vor Ablauf automatisch erneuert.
Da wir nach der Erneuerung des Zertifikats das certbot webroot-Plug-in verwenden, müssen wir auch den nginx-Dienst neu laden.
--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 Lernprogramm haben Sie den Let's Encrypt-Client, certbot, verwendet, um SSL-Zertifikate für Ihre Domain zu generieren. Sie haben auch Nginx-Snippets erstellt, um das Duplizieren von Code zu vermeiden, und Nginx für die Verwendung der Zertifikate konfiguriert. Am Ende des Tutorials haben Sie einen Cronjob für die automatische Zertifikatserneuerung eingerichtet.
nginx debian verschlüsseln wir certbot sslDieser Beitrag ist Teil der Anleitung zur Installation des LEMP-Stacks unter Debian 9.
Andere Beiträge in dieser Reihe:
• MariaDB unter Ubuntu 18.04 installieren • Nginx unter Debian 9 installieren • PHP unter Debian 9 installieren • Nginx-Server-Blöcke unter Debian 9 einrichten • Nginx mit Let's Encrypt unter Debian 9 sichernSichern Sie Nginx mit let's encrypt on centos 7
In diesem Lernprogramm erhalten Sie schrittweise Anweisungen zum Sichern von Nginx mit Let's Encrypt mithilfe des Certbot-Tools unter CentOS 7
Sicherer Apache mit let's encrypt unter Debian 9
Dieses Tutorial führt Sie durch den Prozess des Erwerbs eines kostenlosen Let's Encrypt mit dem Certbot-Tool unter Debian 9. Wir zeigen auch, wie Sie Apache so konfigurieren, dass es das neue SSL-Zertifikat verwendet und HTTP / 2 aktiviert
Sichern Sie Nginx mit let's encrypt on centos 8
In diesem Tutorial erhalten Sie eine schrittweise Anleitung zur Installation eines kostenlosen Let's Encrypt-SSL-Zertifikats unter CentOS 8, 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.