Android

Sicherer Apache mit let's encrypt unter Debian 9

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 Zertifizierungsstelle, die von der Internet Security Research Group (ISRG) erstellt wurde. Es bietet kostenlose SSL-Zertifikate über einen vollautomatisierten Prozess, der die manuelle Erstellung, Validierung, Installation und Erneuerung von Zertifikaten überflüssig macht.

Von Let's Encrypt ausgestellte Zertifikate sind ab dem Ausstellungsdatum 90 Tage lang gültig und werden heute von allen gängigen Browsern als vertrauenswürdig eingestuft.

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.

Voraussetzungen

Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, 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 werden example.com .Apache installieren. Ein virtueller Apache-Host 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 automatisieren kann. Das certbot-Paket ist in den Standard-Debian-Repositories enthalten.

Aktualisieren Sie die Paketliste und installieren Sie das certbot-Paket mit den folgenden Befehlen:

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.

So generieren Sie einen neuen Satz von 2048-Bit-DH-Parametern:

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 Apache-Server schreibbar gemacht.

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

Um das Duplizieren von Code zu vermeiden, erstellen Sie die folgenden zwei Konfigurationsschnipsel:

/etc/apache2/conf-available/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/apache2/conf-available/ssl-params.conf

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH 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, aktiviert OCSP-Heftung, HTTP Strict Transport Security (HSTS) und erzwingt einige sicherheitsgerichtete

mod_ssl mod_headers vor dem Aktivieren der Konfigurationsdateien sicher, dass sowohl mod_ssl als auch mod_headers aktiviert sind, indem Sie mod_ssl mod_headers :

sudo a2enmod ssl sudo a2enmod headers

Aktivieren Sie das HTTP / 2-Modul, mit dem Ihre Websites schneller und robuster werden:

sudo a2enmod

Aktivieren Sie die SSL-Konfigurationsdateien, indem Sie die folgenden Befehle ausführen:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

Laden Sie die Apache-Konfiguration neu, damit die Änderungen wirksam werden:

sudo systemctl reload apache2

Verwenden Sie das Certbot-Tool mit dem Webroot-Plugin, um die SSL-Zertifikatdateien abzurufen:

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: IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2019-01-17. 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 lose your account credentials, you can recover through e-mails sent to [email protected]. - 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 die Zertifikatsdateien haben, bearbeiten Sie die Konfiguration Ihres virtuellen Domain-Hosts wie folgt:

/etc/apache2/sites-available/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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

Mit der obigen Konfiguration erzwingen wir HTTPS und leiten von der WWW-Version zur Nicht-WWW-Version um. Es steht Ihnen frei, die Konfiguration an Ihre Bedürfnisse anzupassen.

Laden Sie den Apache-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl reload apache2

Ö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 alle Zertifikate 30 Tage vor Ablauf automatisch erneuert.

Sobald das Zertifikat erneuert wurde, müssen wir auch den Apache-Dienst neu laden. --renew-hook "systemctl reload apache2" an die Datei /etc/cron.d/certbot , damit es so aussieht:

/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 apache2"

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 Client-Certbot Let's Encrypt verwendet, um SSL-Zertifikate für Ihre Domain abzurufen. Sie haben auch Apache-Snippets erstellt, um das Duplizieren von Code zu vermeiden, und Apache für die Verwendung der Zertifikate konfiguriert. Am Ende des Tutorials haben Sie einen Cronjob für die automatische Zertifikatserneuerung eingerichtet.

apache debian verschlüsseln wir certbot ssl

Dieser Beitrag ist Teil der Anleitung zur Installation von LAMP Stack unter Debian 9.

Andere Beiträge in dieser Reihe:

• So installieren Sie Apache unter Debian 9 • So installieren Sie PHP unter Debian 9 • So richten Sie virtuelle Apache-Hosts unter Debian 9 ein • So installieren Sie MariaDB unter Debian 9 • Sichern Sie Apache mit Let's Encrypt unter Debian 9