AWS Tutorial For Beginners | AWS Full Course - Learn AWS In 10 Hours | AWS Training | Edureka
Inhaltsverzeichnis:
- Voraussetzungen
- Installieren Sie Certbot
- Generiere eine starke Dh (Diffie-Hellman) Gruppe
- Erhalten eines SSL-Zertifikats von Let's Encrypt
- Automatische Verlängerung des SSL-Zertifikats
- 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 werden wir Schritt für Schritt erklären, wie Sie Nginx mit Let's Encrypt mithilfe des Certbot-Tools unter Ubuntu 16.04 sichern können.
Voraussetzungen
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie mit diesem Lernprogramm fortfahren:
- Sie haben einen Domainnamen, der auf Ihre öffentliche Server-IP verweist. In diesem Tutorial werden wir
example.com
Sie haben Nginx installiert, indem Sie wie folgt vorgehen, um Nginx unter Ubuntu 16.04 zu installieren.
Installieren Sie Certbot
Certbot ist ein in Python geschriebenes Dienstprogramm, das die Aufgaben zum Abrufen und Erneuern von Let's Encrypt SSL-Zertifikaten und zum Konfigurieren von Webservern automatisieren kann.
Installieren Sie zuerst das Paket "
software-properties-common
, das das Tool "
add-apt-repository
bereitstellt, das zum Hinzufügen zusätzlicher PPAs erforderlich ist.
Aktualisieren Sie den Paketindex und installieren Sie
software-properties-common
mit:
sudo apt update
sudo apt install software-properties-common
Fügen Sie nach Abschluss der Installation das certbot PPA-Repository mit dem folgenden Befehl zu Ihrem System hinzu:
sudo add-apt-repository ppa:certbot/certbot
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. 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
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.
Zur Vereinfachung
.well-known/acme-challenge
wir alle HTTP-Anforderungen für
.well-known/acme-challenge
einem einzelnen Verzeichnis zu,
/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 wir in alle unsere Nginx-Server-Blockdateien aufnehmen.
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: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;
Das obige Snippet enthält die von Mozilla empfohlenen Chipper, aktiviert OCSP-Heftung, HTTP Strict Transport Security (HSTS) und erzwingt einige sicherheitsgerichtete
Öffnen Sie nach dem
letsencrypt.conf
Snippets den Domain-Server-Block und
letsencrypt.conf
Snippet
letsencrypt.conf
wie folgt hinzu:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Aktivieren Sie den Server-Block, indem Sie einen symbolischen Link von
sites-available
zu
sites-enabled
erstellen:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Laden Sie die Nginx-Konfiguration neu, damit die Änderungen wirksam werden:
sudo systemctl reload nginx
Führen Sie das certbot-Skript mit dem Webroot-Plugin aus und rufen Sie die SSL-Zertifikatdateien ab:
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 abgerufen wurde, gibt certbot die folgende Meldung aus:
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-04-23. 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:
Nachdem wir die Zertifikatsdateien haben, bearbeiten Sie den Domain-Server-Block wie folgt:
/etc/nginx/sites-available/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 der Domäne auf die
non www
Version um.
Laden Sie den Nginx-Dienst neu, damit die Änderungen wirksam werden:
Automatische Verlängerung des SSL-Zertifikats
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 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"
wie
/etc/cron.d/certbot
Datei
/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"
Verwenden Sie den certbot
--dry-run
Schalter, um den Erneuerungsprozess zu testen:
sudo certbot renew --dry-run
Wenn keine Fehler vorliegen, war der Erneuerungsprozess erfolgreich.
Fazit
In diesem Lernprogramm haben Sie den Let's Encrypt-Client, certbot, verwendet, um SSL-Zertifikate für Ihre Domain abzurufen. Sie haben auch Nginx-Snippets erstellt, um Codeduplizierungen 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 ubuntu verschlüsseln wir certbot sslKeePass Password Sichere Überprüfung: Sichere Passwörter
KeePass Password Safe ist ein kostenloser Passwort-Manager für Windows, entwickelt, um sicherzustellen, dass Benutzer ein starkes und sicheres Passwort haben . Lesen Sie die Rezension und laden Sie sie herunter.
2 Kostenlose und sichere Dienste zum Verschlüsseln von Cloud-Dateien
Haben Sie viele Daten in der Cloud? Wir empfehlen, es zu verschlüsseln. Es kann komplex und teuer sein, daher gibt es hier 2 kostenlose und einfache Tools, die sicher sind.
Sichere Nginx mit Let's Encrypt auf Ubuntu 18.04
Let's Encrypt ist eine kostenlose und offene Zertifizierungsstelle, die von der Internet Security Research Group entwickelt wurde. In diesem Tutorial werden wir Schritt für Schritt erklären, wie Sie Nginx mit Let's Encrypt mithilfe des Certbot-Tools unter Ubuntu 18.04 sichern können