GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Sichern Sie Apache mit Lets Encrypt unter Debian 10

Let’s Encrypt ist eine Zertifizierungsstelle, die von der Internet Security Research Group (ISRG) gegründet wurde. Es bietet kostenlose SSL-Zertifikate über einen vollständig automatisierten Prozess, der die manuelle Erstellung, Validierung, Installation und Erneuerung von Zertifikaten überflüssig macht.

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

Dieses Tutorial zeigt, wie man ein kostenloses SSL-Zertifikat von Let’s Encrypt auf Debian 10, Buster mit Apache als Webserver installiert. Wir zeigen auch, wie Sie Apache für die Verwendung des SSL-Zertifikats konfigurieren und HTTP/2 aktivieren.

Voraussetzungen #

Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie mit der Anleitung fortfahren:

  • Angemeldet als root oder Benutzer mit sudo-Berechtigungen.
  • Die Domain, für die Sie das SSL-Zertifikat erhalten möchten, muss auf Ihre öffentliche Server-IP verweisen. Wir verwenden example.com .
  • Apache installiert.

Installieren von Certbot #

Wir verwenden das certbot-Tool, um die Zertifikate zu erhalten und zu erneuern.

Certbot ist ein voll ausgestattetes und benutzerfreundliches Tool, das die Aufgaben zum Abrufen und Erneuern von SSL-Zertifikaten von Let’s Encrypt und zum Konfigurieren von Webservern für die Verwendung der Zertifikate automatisiert.

Das certbot-Paket ist in den Standard-Debian-Repositories enthalten. Führen Sie die folgenden Befehle aus, um certbot zu installieren:

sudo apt updatesudo apt install certbot

Generieren von starker Dh (Diffie-Hellman)-Gruppe #

Der Diffie-Hellman-Schlüsselaustausch (DH) ist eine Methode zum sicheren Austausch kryptografischer Schlüssel über einen ungesicherten Kommunikationskanal.

Führen Sie den folgenden Befehl aus, um einen neuen 2048-Bit-DH-Schlüssel zu generieren:

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, aber die Generierung kann je nach Systementropie mehr als 30 Minuten dauern.

Ein SSL-Zertifikat von Let’s Encrypt erhalten #

Um ein SSL-Zertifikat für die Domain zu erhalten, verwenden wir das Webroot-Plug-in, das funktioniert, indem es eine temporäre Datei zur Validierung der angeforderten Domain in ${webroot-path}/.well-known/acme-challenge Verzeichnis. Der Let’s Encrypt-Server sendet HTTP-Anforderungen an die temporäre Datei, um zu überprüfen, ob die angeforderte Domäne zu dem Server aufgelöst wird, auf dem certbot ausgeführt wird.

Um es einfacher zu machen, werden wir alle HTTP-Anfragen für .well-known/acme-challenge abbilden in ein einziges Verzeichnis, /var/lib/letsencrypt .

Führen Sie die folgenden Befehle aus, um das Verzeichnis zu erstellen und es für den Apache-Server beschreibbar zu machen.

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

Um doppelten Code zu vermeiden, erstellen Sie die folgenden zwei Konfigurationsausschnitte:

/etc/apache2/conf-available/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>
/etc/apache2/conf-available/ssl-params.conf
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options SAMEORIGIN
Header always set X-Content-Type-Options nosniff

SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

Der Code im obigen Snippet verwendet die von Mozilla empfohlenen Chipper, aktiviert OCSP Stapling, HTTP Strict Transport Security (HSTS) und erzwingt wenige sicherheitsorientierte HTTP-Header.

Stellen Sie sicher, dass sowohl mod_ssl und mod_headers werden geladen:

sudo a2enmod sslsudo a2enmod headers

Aktivieren Sie das HTTP/2-Modul, das Ihre Websites schneller und stabiler macht:

sudo a2enmod http2

Aktivieren Sie die SSL-Konfigurationsdateien:

sudo a2enconf letsencryptsudo 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-Zertifikatsdateien zu erhalten:

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, druckt certbot die folgende Nachricht:

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-04-02. 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:                    https://eff.org/donate-le

Nachdem Sie nun über die Zertifikatsdateien verfügen, bearbeiten Sie die Konfiguration Ihres virtuellen Domänenhosts wie folgt:

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80> 
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.example.com'">
    Redirect permanent / https://example.com/
  </If>

  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

</VirtualHost>

Mit der obigen Konfiguration erzwingen wir eine HTTPSand-Weiterleitung von www zu einer nicht-www-Version. Fühlen Sie sich 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.

Wenn Sie Ihre Domain mit dem SSL Labs Server Test testen, erhalten Sie die Note A+, wie unten gezeigt:

SSL-Zertifikat von Let’s Encrypt automatisch verlängern #

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 jedes Zertifikat 30 Tage vor seinem Ablauf automatisch verlängert.

Sobald das Zertifikat erneuert ist, müssen wir auch den Apache-Dienst neu laden. Hängen Sie --renew-hook "systemctl reload apache2" an zu /etc/cron.d/certbot Datei, sodass sie wie folgt aussieht:

/etc/cron.d/certbot
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew --renew-hook "systemctl reload apache2"

Um den Erneuerungsprozess zu testen, verwenden Sie den certbot --dry-run Schalter:

sudo certbot renew --dry-run

Wenn keine Fehler vorliegen, bedeutet dies, dass der Erneuerungsprozess erfolgreich war.


Debian
  1. Sichern Sie Apache mit Lets Encrypt auf Ubuntu 18.04

  2. Sichern Sie Nginx mit Lets Encrypt auf Ubuntu 20.04

  3. Sichern Sie Apache mit Lets Encrypt auf Ubuntu 20.04

  4. Sichern Sie Apache2 mit Let’s Encrypt SSL auf Debian 10/11

  5. So installieren Sie Let’s Encrypt SSL mit Apache unter Debian 11

So installieren Sie DokuWiki mit Lets Encrypt SSL unter Debian 11

Installieren Sie TaskBoard mit Apache und lassen Sie SSL unter Debian 11 verschlüsseln

So installieren Sie SuiteCRM mit Apache und kostenlosem Lets Encrypt SSL unter Debian 11

So installieren Sie InvoicePlane mit Apache und dem kostenlosen Lets Encrypt SSL-Zertifikat unter Debian 11

So installieren Sie Discourse Forum mit Nginx und Free Lets Encrypt SSL unter Debian 11

So installieren und konfigurieren Sie Apache mit Let’s Encrypt TLS/SSL unter Debian 11 Bullseye