Ubuntu: HTTPS auf Apache mit Let’s Encrypt

Let’s Encrypt ist ein kostenloser Dienst zur Bereitstellung von Zertifikaten. Mit diesen Zertifikaten baut dein Webserver und deine Website eine verschlüsselte Verbindung mit dem Besucher deiner Website über https auf. Anfragen und Antworten zwischen Server und Computer sind verschlüsselt und nicht einsehbar.

Google sieht https als positiven Ranking-Faktor für die Google-Suche und Browser-Hersteller blockieren teilweise nicht-https Traffic. Du betreibst einen eigenen LAMP-Stack Webserver auf Ubuntu? Diese Anleitung zeigt dir, wie du den Traffic für deinen Apache Server mit Let’s Encrypt verschlüsseln kannst.

Apache und Let’s Encrypt: https auf Ubuntu Webserver

Diese Anleitung ist Teil aus der Serie: WordPress Website mit eigener Domain auf einem Raspberry Pi hosten. Damit die Anfragen an den Webserver verschlüsselt werden und verschlüsselt beantwortet werden, benötigt der Apache Server ein kostenloses Let’s Encrypt Zertifikat. Gleichzeitig musst du deiner Domain bekannt geben, dass dein Server Let’s Encrypt als Zertifikat nutzt.

Apache: Let’s Encrypt installieren

Ab Ubuntu 16.04 ist der Let’s Encrypt-Client (Certbot) im Ubuntu-Repository enthalten, sodass du diesen mit dem folgenden Befehl installieren kannst. Python3-certbot-apache ist das Certbot-Apache-Plugin.

sudo apt install certbot python3-certbot-apache

Prüfe die Versionsnummer mit folgendem Befehl:

certbot --version

Beispiel Ergebnis:

certbot 0.40.0

Du kannst den Certbot auch aus dem Snap Store installieren:

sudo apt install snapd

sudo snap install --classic certbot

Wenn du die Snap-Version verwenden möchtest, musst du den vollständigen Binärpfad verwenden: /snap/bin/certbot

Apache-Plugin zum Aktivieren von HTTPS verwenden

Wenn deine Website keinen CDN-Dienst verwendet, solltest du das Apache-Plugin zum Aktivieren von HTTPS auf deinem Apache-Webserver verwenden. Das Apache Plugin bezieht automatisch ein SSL/TLS-Zertifikat und konfiguriert das Zertifikat für dich. Führe folgenden Befehl auf deinem Ubuntu-Server aus. Achtung: Ändere die markierten Stellen für deine Domain passend ab.

sudo certbot --apache --agree-tos --redirect --uir --hsts --staple-ocsp --must-staple -d www.domain-eins.com,domain-eins.de --email du@domain-eins.de

Erklärung:

  • apache: Verwenden des Apache-Authentifikator und das Installationsprogramm
  • agree-tos: Zustimmen zu den Let’s Encrypt-Servicebedingungen
  • redirect: Automatisches Umleiten des gesamten HTTP-Verkehrs auf HTTPS
  • uir: Fügt den Header „Content-Security-Policy: upgrade-insecure-requests“ zu jeder HTTP-Antwort hinzu.
  • hsts: Füge den Strict-Transport-Security-Header zu jeder HTTP-Antwort hinzu.
  • staple-ocsp: Aktiviert OCSP-Stapling.
  • must-staple: Fügt dem Zertifikat die OCSP-Must-Staple-Erweiterung hinzu.
  • -d Flag wird von einer Liste von Domainnamen gefolgt, die durch Komma getrennt sind. Du kannst können bis zu 100 Domänennamen hinzufügen.
  • email: E-Mail, die für den Registrierungs- und Wiederherstellungskontakt verwendet wird.

Du wirst gefragt, ob du E-Mails von der EFF(Electronic Frontier Foundation) erhalten möchtest. Nachdem du Y oder N gewählt hast, wird dein SSL-Zertifikat automatisch für dich bezogen und konfiguriert.

Wenn du nun deine Website aufrufst, siehst du, dass HTTP automatisch auf eine HTTPS-Verbindung umgeleitet wird. Bitte beachte, dass der certbot-Client beim Konfigurieren von SSL für deine Website den virtuellen SSL-Host /etc/apache2/sites-enabled/domain-eins.de-le-ssl.conf erstellt.

Let's Encrypt Zertifikat für Apache
Let’s Encrypt Zertifikat für Apache (Bild: Screenshot).

Domain: Let’s Encrypt einrichten

Die Einrichtung wird beispielhaft an einer Domain, gehostet bei All-Inkl.com, gezeigt. Solange du Zugriff auf die DNS-Einstellungen deiner Domain hast, kannst du diese Anleitung auch auf einen anderen Hoster übertragen.

Die verwendete Domain benötigt ein Information, dass deine Website ein Let’s Encrypt Zertifikat verwendet. Dazu musst du einen neuen DNS-Eintrag an der Domain hinterlegen. All-Inkl.com Kunden melden sich an der technischen Verwaltung an und bearbeiten den DNS. Zu finden unter Tools, DNS-Einstellungen.

Für die Domain muss ein neuer DNS-Eintrag vom Typ CAA hinterlegt werden. Unter sslmate.com/caa/ findet du ein CAA-Generator für viele Zertifikate-Hersteller.

All-Inkl.com DNS-Eintrag für Let's Encrypt
All-Inkl.com DNS-Eintrag für Let’s Encrypt (Bild: Screenshot).

Teste dein SSL-Zertifikat

Über die Website ssllabs.com, kannst du dein SSL-Zertifikat und die Konfiguration zu testen lassen.

Zertifikat automatisch verlängern

Um das Let’s Encrypt-Zertifikat automatisch zu erneuern, bearbeite einfach die crontab-Datei des Root-Benutzers.

sudo crontab -e

Füge ganz unten in der Datei folgende Zeile ein:

@daily certbot renew --quiet && systemctl reload apache2

Mit dem Flag –quiet werden normale Meldungen unterdrückt. Wenn du Fehlermeldungen erhalten möchtest, dann füge die folgende Zeile am Anfang der Datei crontab ein.

MAILTO=deine-E-Mail-Adresse

Der Apache muss neu gestartet werden, damit er das neue Zertifikat den Clients präsentieren kann.

TLSv1 und TLSv1.1deaktivieren

TLSv1 und TLSv1.1 werden nicht mehr als sicher angesehen. Um diese zu deaktivieren, bearbeite die Konfigurationsdatei der Let’s Encrypt SSL-Optionen.

sudo nano /etc/letsencrypt/options-ssl-apache.conf

Suche die folgende Zeile, in der SSLv2 und SSLv3 standardmäßig deaktiviert sind.

SSLProtocol             all -SSLv2 -SSLv3

Änder die Zeilen wie folgt, um auch TLSv1.0 und TLSv1.1 zu deaktivieren.

SSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

Speichere und schließe die Datei. Starte dann den Apache neu.

sudo systemctl restart apache2

Jetzt kann dein Apache Webserver Traffic via https uns Let’s Encrypt verschlüsseln und deine Domain weiß, welcher Aussteller für Zertifikate verwendet wird.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.