Android

Sichere Apache mit Let's Encrypt auf Ubuntu 18.04

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 werden heute von allen gängigen Browsern als vertrauenswürdig eingestuft.

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.

Voraussetzungen

Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie mit diesem Lernprogramm fortfahren:

  • Domänenname, der auf Ihre öffentliche Server-IP verweist. Wir werden example.com Sie haben Apache mit einem virtuellen Apache-Host für Ihre Domain installiert.

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 und zum Konfigurieren von Webservern automatisieren kann. Das certbot-Paket ist in den Standard-Ubuntu-Repositories enthalten.

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. Wir werden einen neuen Satz von 2048-Bit-DH-Parametern generieren, 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 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.

Zur Vereinfachung .well-known/acme-challenge wir alle HTTP-Anforderungen für .well-known/acme-challenge einem einzelnen Verzeichnis zu, /var/lib/letsencrypt .

Die folgenden Befehle erstellen das Verzeichnis und machen es für den Apache-Server beschreibbar.

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 als Nächstes die SSL-Konfigurationsdateien, indem Sie die folgenden Befehle ausführen:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

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

sudo a2enmod

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

sudo systemctl reload apache2

Jetzt können wir das Certbot-Tool mit dem Webroot-Plugin ausführen und die SSL-Zertifikatsdateien abrufen, indem wir Folgendes eingeben:

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-10-28. 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 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

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, erstellt das certbot-Paket einen Cronjob, der zweimal täglich ausgeführt wird und jedes Zertifikat 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 , so dass es 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(3600))' && certbot -q renew --renew-hook "systemctl reload apache2"

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

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 herunterzuladen. 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 ubuntu verschlüsseln wir certbot ssl

Dieser Beitrag ist Teil der Installationsanleitung für die Lampenstapel-auf-Ubuntu-18-04-Serie.

Andere Beiträge in dieser Reihe:

• Installieren von Apache unter Ubuntu 18.04 • Einrichten von virtuellen Apache-Hosts unter Ubuntu 18.04 • Sichern von Apache mit Let's Encrypt unter Ubuntu 18.04 • Installieren von MySQL unter Ubuntu 18.04 • Installieren von PHP unter Ubuntu 18.04