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 Erneuerung Lassen Sie uns das SSL-Zertifikat verschlüsseln
- Fazit
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.
In diesem Tutorial wird erklärt, wie Sie ein kostenloses Let's Encrypt SSL-Zertifikat unter CentOS 8 installieren, auf dem Apache als Webserver ausgeführt wird. Wir werden das Certbot-Tool verwenden, um die Zertifikate zu erhalten und zu erneuern.
Voraussetzungen
Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie fortfahren:
- Verfügen Sie über einen Domainnamen, der auf Ihre öffentliche Server-IP verweist. Wir verwenden
example.com
.Apache ist auf Ihrem Server installiert und wird mit einem für Ihre Domain konfigurierten virtuellen Host ausgeführt. 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:
sudo dnf install mod_ssl openssl
Wenn das mod_ssl-Paket installiert ist, sollte es einen selbstsignierten Schlüssel und Zertifikatsdateien für den localhost erstellen. Wenn die Dateien nicht automatisch erstellt werden, können Sie sie mit dem Befehl
openssl
erstellen:
sudo openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes \
-out /etc/pki/tls/certs/localhost.crt \
-keyout /etc/pki/tls/private/localhost.key
Installieren Sie Certbot
Certbot ist ein kostenloses Befehlszeilentool, das den Vorgang 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 Standard-CentOS 8-Repositorys enthalten, kann jedoch von der Website des Herstellers heruntergeladen werden.
Führen Sie den folgenden
wget
Befehl als root- oder sudo-Benutzer aus, um das certbot-Skript in das Verzeichnis
/usr/local/bin
herunterzuladen:
sudo wget -P /usr/local/bin
Sobald der Download abgeschlossen ist, machen Sie die Datei ausführbar:
sudo chmod +x /usr/local/bin/certbot-auto
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
Sie können die Größe 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, 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.
Um das Setup zu
.well-known/acme-challenge
wir alle HTTP-Anforderungen für
.well-known/acme-challenge
einem einzelnen Verzeichnis zu,
/var/lib/letsencrypt
.
Führen Sie die folgenden Befehle aus, um das Verzeichnis zu erstellen und für den Apache-Server schreibbar zu machen.
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp apache /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
Erstellen Sie die folgenden beiden Konfigurationsschnipsel, um zu vermeiden, dass Code dupliziert wird, und um die Konfiguration wartbarer zu machen:
/etc/httpd/conf.d/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM # Requires Apache 2.4.36 & OpenSSL 1.1.1 SSLProtocol -all +TLSv1.3 +TLSv1.2 SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 # Older versions # 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 DENY 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 SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
Das obige Snippet verwendet die von Cipherli.st empfohlenen Chipper. Es aktiviert OCSP-Heftung, HTTP-HSTS (Strict Transport Security) und Dh-Schlüssel und erzwingt nur wenige sicherheitsgerichtete
Laden Sie die Apache-Konfiguration neu, damit die Änderungen wirksam werden:
sudo systemctl reload
Jetzt können Sie mit dem Webroot-Plugin ein Certbot-Skript ausführen und die SSL-Zertifikatsdateien abrufen:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Bei Erfolg 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 2020-01-26. 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" - 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:
Nachdem Sie alles eingerichtet haben, bearbeiten Sie die Konfiguration Ihres virtuellen Domain-Hosts wie folgt:
/etc/httpd/conf.d/example.com.conf
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ 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/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ 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/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ 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/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ 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/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
Die obige Konfiguration erzwingt HTTPS und leitet von der WWW-Version zur Nicht-WWW-Version um. Außerdem wird HTTP / 2 aktiviert, wodurch Ihre Websites schneller und robuster werden. Es steht Ihnen frei, die Konfiguration an Ihre Bedürfnisse anzupassen.
Starten Sie den Apache-Dienst neu:
sudo systemctl restart
Sie können Ihre Website jetzt mit
https://
öffnen und sehen ein grünes Schlosssymbol.
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, erstellen wir einen Cronjob, der zweimal täglich ausgeführt wird und alle Zertifikate 30 Tage vor Ablauf automatisch erneuert.
Führen Sie den folgenden Befehl aus, um einen neuen Cronjob zu erstellen, der das Zertifikat erneuert und Apache neu startet:
echo "0 0, 12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto -q renew --renew-hook \"systemctl reload httpd\"" | sudo tee -a /etc/crontab > /dev/null
Verwenden Sie zum Testen des Erneuerungsprozesses den Befehl certbot und anschließend den Schalter
--dry-run
:
sudo /usr/local/bin/certbot-auto renew --dry-run
Wenn keine Fehler vorliegen, war der Erneuerungsprozess erfolgreich.
Fazit
In diesem Tutorial haben wir uns mit der Verwendung des Let's Encrypt-Client-Zertifikats unter CentOS befasst, um SSL-Zertifikate für Ihre Domains zu erhalten. Sie haben auch gezeigt, wie Sie Apache für die Verwendung der Zertifikate konfigurieren und einen Cronjob für die automatische Zertifikatserneuerung einrichten.
Weitere Informationen zum Certbot-Skript finden Sie in der Certbot-Dokumentation.
apache centos verschlüsseln wir certbot sslSicherer Apache mit let's encrypt on centos 7
In diesem Lernprogramm werden die Schritte beschrieben, die zum Installieren eines kostenlosen Let's Encrypt-SSL-Zertifikats auf einem CentOS 7-Server erforderlich sind, auf dem Apache als Webserver ausgeführt wird.
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
Sichere Apache mit Let's Encrypt auf Ubuntu 18.04
In diesem Tutorial werden wir Schritt für Schritt erklären, wie Sie Ihren Apache mit Let's Encrypt mithilfe des Certbot-Tools unter Ubuntu 18.04 sichern können.