Das Projekt Let’s Encrypt bietet kostenlose Zertifikate an, die von den meisten gängigen Webbrowsern akzeptiert werden, ohne manuell eine Ausnahme für die Verwendung des Zertifikats (wie bei selbst erstellen Zertifikaten) bestätigen zu müssen. Let’s Encrypt stellt lediglich die Zertifikats-Infrastruktur zur Verfügung. Um die Entwicklung des offiziellen Let’s-Encrypt-Client kümmert sich die Electronic Frontier Foundation (EFF) um die Entwicklung und Wartung der Software. Der offizielle Let’s-Encrypt-Client hat seither den Namen certbot. Installationsanleitungen für diverse Distributionen finden Sie auf der Seite https://certbot.eff.org.
Die Installation und Konfiguration der SSL Zertifikate und des Apache Webservers ist mit dem Lets Encrypt Cerbot schnell und einfach zu bewerkstelligen. Für das Let’s-Encrypt-Projekt gelten drei Grundannahmen, die sich von den etablierten Zertifizierungsstellen wie Thawte oder Verisign unterscheiden:
- Überprüft wird nur die Domain, nicht aber, wer Sie sind bzw. ob es Ihre Firma gibt. Die Zertifikate haben damit die gleiche Qualität wie die jeweils kostengünstigsten Zertifikate kommerzieller Anbieter. Für private/kleine Webauftritte ist das absolut ausreichend. Let’s Encrypt richtet sich aber nicht an Online-Shops, große Firmen, Banken etc., bei deren Zertifikaten (gegen gutes Geld) auch der Inhaber der Domain überprüft wird.
- Die Installation der Zertifikate erfolgt weitgehend automatisiert durch das Kommando certbot. Damit entfällt das umständliche Handling mit Schlüsseln und Zertifikatsdateien, die per E-Mail versendet bzw. manuell heruntergeladen werden müssen. In diesem Punkt bietet Let’s Encrypt mehr Komfort als kommerzielle Anbieter.
- Die Zertifikate sind generell nur 90 Tage gültig, werden aber regelmäßig automatisch erneuert und überprüft.
- Um Missbrauch zu vermeiden, gibt es strikte Limits, wie viele Zertifikate für eine Domain in einer bestimmten Zeit erzeugt werden dürfen.
Daher sollte das Kommando certbot für erste Tests mit der Option –staging (ehemals –test-cert) verwendet werden. Die –staging Option erstellt Zertifikate von einem Test-System. Nachdem die Konfiguration überprüft und sichergestellt ist, dass alles funktioniert, kann cerbot ohne die –staging Option zur Erstellung der richtigen Zertifikate aufgerufen werden.
SSL Module des Apache Webserver aktivieren
Als Basis wird eine Debian 11 Installation mit einem Apache Webserver verwendet. Die Aktivierung der SSL Standardkonfiguration erfolgt folgendermaßen :
1 2 |
sudo a2enmod ssl sudo a2ensite default-ssl.conf |
Certbot installieren
Certbot ist in den offiziellen Repositories enthalten und kann daher wie gewohnt einfach mit folgendem Befehl installiert werden:
1 |
sudo apt-get install certbot python3-certbot-apache |
Alternativ kann die Installation aus dem Cerbot Repository erfolgen :
1 2 3 |
add-apt-repository ppa:certbot/certbot apt update apt install python-certbot-apache |
Let’s-Encrypt-Zertifikate für Apache installieren
Um Let’s-Encrypt-Zertifikate anzufordern und für den Webserver Apache zu installieren, führen Sie das folgende Kommando aus. Dabei ersetzen Sie meine-domain.de durch Ihren Domainnamen. Die Zertifikate für smtp.* und imap.* sollen später zur sicheren Konfiguration des Mail-Servers verwendet werden. Wenn Sie nicht vorhaben, einen Mail-Server einzurichten, lassen Sie diese beiden Hostnamen weg. Nicht verzichten sollten Sie hingegen auf die www-Variante, selbst wenn Sie http://domainname gegenüber http://www.domainname vorziehen. Das www-Subdomain-Zertifikat ist erforderlich, damit HTTPS-Rewrite-Regeln von www.domainname auf domainname funktionieren.
Erst wenn Sie sicher sind, dass alles klappt, entfernen Sie zuletzt die Option –staging und wiederholen das Kommando nochmals zur Installation der endgültigen Zertifikate.
1 2 3 |
certbot --apache -d www.meine-domain.de \ -d imap.meine-domain.de \ -d smtp.meine-domain.de |
Das Kommando certbot fordert Sie auf, einen E-Mail-Namen anzugeben. Über diese E-Mail werden Sie verständigt, wenn Ihre Zertifikate ablaufen. Wenn certbot in der Apache-Konfiguration keine Datei mit ServerName-Einstellungen findet, die mit den von Ihnen angegebenen Hostnamen übereinstimmen, müssen Sie in einem weiteren Dialog auswählen, in welche Apache-Konfigurationsdatei die SSL-Konfiguration eingetragen wird. Außerdem können Sie entscheiden, ob Ihre Webseite auch via HTTP zugänglich sein soll, oder ob HTTPS das einzig erlaubte Protokoll ist. certbot fügt dann auch entsprechende Umleitungsanweisungen in Ihre Apache-Konfiguration ein.
Certbot fordert nun beim Let’s-Encrypt-Projekt die für Sie generierten Zertifikate an, lädt diese herunter, installiert alle erforderlichen Dateien in das Verzeichnis /etc/letsencrypt, aktualisiert die Apache-Konfiguration und startet Apache schließlich neu.
Die Let’s-Encrypt-Zertifikate sind grundsätzlich universell verwendbar. Da es aber üblich ist, den SMTP-Server über den Hostnamen smtp.meine-domain.de und den IMAP-Server über imap.meine-domain.de anzusprechen, müssen Sie auch für diese beiden Hostnamen Zertifikate anfordern.
Automatische Erneuerung der Let’s-Encrypt Zertifikate
Mit der Installation von Certbot wird automatisch ein Cronjob angelegt, der zweimal täglich die Zertifikate mit dem Certbotserver abgleicht. Dies kann mit folgendem Befehl überprüft werden:
1 |
sudo systemctl status certbot.timer |
Falls kein Cronjob angelegt wurde ( Debian 9 ) kann der Abgleich auch mit einem manuell erstellen Cronjob automatisiert werden:
1 |
30 17 4 */3 0 certbot renew >/dev/null 2>&1 |
* der o.g. Cronjob wird um 17:30 am 4ten jeden 3ten Monat ausgeführt.
Der certbot renew Befehl überprüft selbständig, ob eine Zertifikatserneuerung notwendig ist. Daher kann o.g. Cronjob auch täglich oder stündlich ausgeführt werden um Serverausfallzeiten so gering wie möglich zu halten (falls das erstellte Zertifikat vor dem Cronjob zur Erneuerung ablaufen sollte).
Umleitung von HTTP zu HTTPS erzwingen
Um jegliche Serveranfragen von http zu https umzuleiten wird in der Datei /etc/apache2/apache2.conf folgender Eintrag hinzugefügt:
1 2 3 |
<VirtualHost *:80> Redirect permanent / https://SERVER_NAME/ </VirtualHost> |
Fehlerquellen
DNS problem: NXDOMAIN looking up A for speefak.spdns.de- check that a DNS record exists for this/
DNS problem: NXDOMAIN looking up AAAA for speefak.spdns.de- check that a DNS record exists for this/
=> Falscher oder fehlender Eintrag des DDNS Anbieters für IPv4 (A) oder IPv6 (AAAA)
...
by Speefak | www.sebae.net | www.karl-deutsch.at | kofler.info | https://legacy.thomas-leister.de | www.mva.ch