Android

Sicherer Apache mit let's encrypt on centos 8

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.

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 /etc/httpd/conf.d/ssl-params.conf

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 ssl